4

我正在实现一个实现 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>备注:当键是通用的(如)时,问题不会出现。

4

0 回答 0