我正在使用代码约定来声明一个属性返回一个非空的,非空的字符串序列,如下所示:
public IEnumerable<string> Filenames { get { Contract.Ensures(Contract.Result<IEnumerable<string>>() != null); // Next line gives Resharper Warning // "Possible null assignment to entity marked with 'not null' attribute": Contract.Ensures(Contract.Result<IEnumerable<string>>().Any()); return new []{"TEST"}; // Dummy data for demo purposes. } }
我正在收到来自Resharper的警告,如上面的代码注释中所述.
这类似于the question here:,但我已尝试在该问题的答案中应用此修复程序,但它并未解决此特定问题.
有谁知道如何解决这个问题(除了使用Resharper注释来抑制警告)?
我正在使用Resharper 7.1.2 C#Edition,build 7.1.2000.1478
(我已经检查了几台机器,它发生在所有机器上.Villa安装了R# – 除了我尝试应用上面链接的答案中的修复程序之外,我们没有修改任何XML文件.)
更多的信息:
我正在尝试使用带有.Net 4.0和.Net 4.5的更新2的Visual Studio 2012.
此外,您需要将条件编译符号“CONTRACTS_FULL”添加到项目的构建设置(在“条件编译符号”文本框中).
解决方法
问题在于,尽管ReSharper ExternalAnnotations涵盖了大多数代码契约,但Ensures不是其中之一(即使在任何浮动的自定义xmls中也是如此).
我只是从最新的ReSharper v8 EAP中检查了ExternalAnnotations,它们仍然与v7.1.3完全相同 – 所以到目前为止一切都没有改变.
我会提出一个新问题,询问是否有人知道如何实现它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。