我使用代码合同来声明一个属性返回一个非空、非空的字符串序列,如下所示:
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 的警告。
这与此处的问题类似:,但我已尝试在该问题的答案中应用修复程序,但它并没有解决此特定问题。
有谁知道如何解决这个问题(除了使用 Resharper 评论来抑制警告)?
我正在使用 Resharper 7.1.2 C# 版,构建 7.1.2000.1478
(我已经检查了几台机器,并且在所有机器上都发生了这种情况。R# 的香草安装 - 除了我试图应用我上面链接的答案中的修复程序之外,我们没有修改它的任何 XML 文件。)
更多的信息:
我正在使用带有更新 2、.Net 4.0 和 .Net 4.5 的 Visual Studio 2012 尝试此操作。
此外,您需要将条件编译符号“CONTRACTS_FULL”添加到项目的构建设置中(在“条件编译符号”文本框中)。