Dom*_*nic 7 c# interface code-contracts
我写的一个课程实现IDictionary<string, object>.在我的CopyTo实现中,我想使用代码契约:像Contract.Requires<ArgumentNullException>(array != null).
但是,我收到此警告(为了便于阅读,删除了一些名称空间):
方法' LuaDictionary.CopyTo(KeyValuePair<String,Object>[],Int32)'实现接口方法' ICollection<KeyValuePair<String,Object>>.CopyTo(KeyValuePair<String,Object>[],Int32)',因此无法添加Requires.
我看到有一些相关的问题,但它们似乎都与用户控制下的接口有关.显然,IDictionary<T, U>不在我的控制之下,所以我不能用它ContractClassFor或类似的东西注释它.
我在这里无法使用代码合同吗?如果是这样......主要的无赖......
请记住,IDictionary<K,V>已经有Requires:)
您可以在以下位置查看类的现有合同DLL : C:\Program Files (x86)\Microsoft\Contracts.
如果mscorlib.Contracts.dll使用Reflector 打开,则可以查看集合类的合同; CopyTo有以下内容:
public void CopyTo(T[] array, int arrayIndex)
{
Contract.Requires((bool)(array != null), null, "array != null");
Contract.Requires((bool)(arrayIndex >= 0), null, "arrayIndex >= 0");
Contract.Requires((bool)((arrayIndex + this.Count) <= array.Length), null, "arrayIndex + this.Count <= array.Length");
}
Run Code Online (Sandbox Code Playgroud)