我正在使用Resharper 5.x进行编译时分析,它通常很不错,但似乎并没有将代码契约应用于其逻辑。我有类似下面的内容,但我在标记的行上遇到了问题。
public void Method(int arg)
{
Contract.Requires(this.NullableValueType != null);
this.Method2(
arg,
this.NullableValueType.Value, // [1]
this.ReferenceType);
}
[1]最终以“可能的'System.InvalidOperationException'”突出显示。有没有办法在不关闭支票的情况下摆脱这个错误?
答案 0 :(得分:0)
虽然承认Resharper可能更聪明并且考虑到合同,但遗憾的是目前它并没有。
我建议让这条线更明确。而不是
this.NullableValueType.Value
你可以写
this.NullableValueType ?? <something>
当然,“某些东西”无关紧要,因为它永远不会发生(例如,new ThatValueType()
)。