请看以下代码:
我收到了以下警告:
检测到对 '
这个警告是很有道理的。但我仍然想在契约中调用委托而不会收到警告(假设我已经将警告转换为错误)。如何实现?
我尝试了像示例中所示的
我还想知道为什么可以在参数上指定
考虑下面的代码:
int SomeField;
void Foo([Pure] Func<int, object> getData)
{
Contract.Requires(getData != null);
Contract.Requires(getData(this.SomeField) != null);
}
我收到了以下警告:
检测到对 '
System.Func'2<System.Int32,System.Object>.Invoke(System.Int32)
' 方法的调用,该方法在 '....Foo(System.Func'2<System.Int32,System.Object>)
' 的合同中没有使用 [Pure]
。这个警告是很有道理的。但我仍然想在契约中调用委托而不会收到警告(假设我已经将警告转换为错误)。如何实现?
我尝试了像示例中所示的
Pure
属性,但那行不通。我还想知道为什么可以在参数上指定
PureAttribute
。如果参数的类型不是委托类型,则没有意义;即使是委托类型,它也不按照我期望的那样工作,正如我上面所述。