1
为什么我会收到警告“CodeContracts:可能在空引用'流上调用方法'”。在这个代码示例?为什么Contract.Ensures(Contract.Result <...>!= null)不起作用?
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并且在GetRequestStream()下一行的方法HttpWebRequest类:
public virtual Stream GetRequestStream()
{
Contract.Ensures(Contract.Result<Stream>() != null, null, "Contract.Result<System.IO.Stream>() != null");
}
我可以复制这个,它看起来像一个错误。您可以尝试在Code Contracts论坛上询问:http://social.msdn.microsoft.com/Forums/en-NZ/codecontracts/threads – porges