首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Contract.Ensures(Contract.Result<...>!=null)不起作用?

为什么Contract.Ensures(Contract.Result<...>!=null)不起作用?
EN

Stack Overflow用户
提问于 2012-01-25 01:02:46
回答 1查看 475关注 0票数 1

为什么我得到警告“流:可能在空引用‘CodeContracts’上调用一个方法。”在这个代码样本上?

代码语言:javascript
复制
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()方法中有下一行代码:

代码语言:javascript
复制
public virtual Stream GetRequestStream()
{
    Contract.Ensures(Contract.Result<Stream>() != null, null, "Contract.Result<System.IO.Stream>() != null");
}
EN

回答 1

Stack Overflow用户

发布于 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来避免该警告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8990898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档