我正在实现一个实现 IDictionary 的类。但我无法匹配 TryGetValue 的代码合同。
这是代码的相关部分:
class Wrapper : IDictionary<string, object>
{
...
IDictionary<string,object> dictionary;
public bool TryGetValue(string key, out object value)
{
var result = dictionary.TryGetValue(key, out value);
Contract.Assume(result == ContainsKey(key));
return result;
}
public bool ContainsKey(string key)
{
Contract.Ensures(Contract.Result<bool>() == dictionary.ContainsKey(key));
return dictionary.ContainsKey(key);
}
...
}
静态分析抱怨:
CodeContracts:确保未经证实:
Contract.Result<bool>() == @this.ContainsKey(key)
我应该怎么做才能满足合同要求?
Wrapper<TKey> : IDictionary<TKey, object>
备注:当键是通用的(如)时,问题不会出现。