Resharper和代码合同不能很好地协作
问题描述:
我使用Resharper 5.x来编译时分析,它通常很好,但似乎并没有将代码合约应用于其逻辑。我有类似以下的内容,但是我在标记行上遇到问题。Resharper和代码合同不能很好地协作
public void Method(int arg)
{
Contract.Requires(this.NullableValueType != null);
this.Method2(
arg,
this.NullableValueType.Value, // [1]
this.ReferenceType);
}
[1]最终以“Possible”System.InvalidOperationException'突出显示。有没有办法摆脱这个错误,而不关掉支票?
答
尽管公认Resharper可能会更聪明并考虑到合同,但不幸的是,目前情况并非如此。
我会建议让行更明确。取而代之的
this.NullableValueType.Value
你可以写
this.NullableValueType ?? <something>
其中“东西”是的,当然,这东西并不重要,因为它永远不会发生(例如,new ThatValueType()
)。
重复的问题,请参阅:http://stackoverflow.com/questions/929859/resharper-possible-null-assignment-when-using-microsoft-contracts - 您需要告诉Resharper Code Codes的验证方法。 – porges 2010-09-15 22:01:41