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)
归档时间: |
|
查看次数: |
1873 次 |
最近记录: |