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