为什么我得到警告“流:可能在空引用‘CodeContracts’上调用一个方法。”在这个代码样本上?
public static void Test()
{
var request = (HttpWebRequest)HttpWebRequest.Create("some url");
Contract.Assume(request != null);
var stream = request.GetRequestStream();
stream.Flush(); // WARNING IN THIS LINE
}我问这个问题是因为我在System.Contracts.dll中使用了反射器,并且在HttpWebRequest类的GetRequestStream()方法中有下一行代码:
public virtual Stream GetRequestStream()
{
Contract.Ensures(Contract.Result<Stream>() != null, null, "Contract.Result<System.IO.Stream>() != null");
}发布于 2012-03-21 06:15:26
该协定将被忽略,因为没有适用于该协定的方法。HttpWebRequest中没有public virtual Stream GetRequestStream。但是,在WebRequest中有一个public virtual Stream GetRequestStream,在HttpWebRequest中有一个public override Stream GetRequestStream,但它们在System.Contracts.dll中都没有任何合同。
您可以将其报告为错误,并且可以使用Contract.Assume来避免该警告。
https://stackoverflow.com/questions/8990898
复制相似问题