字典扩展编译但不可调用

时间:2014-02-11 04:14:48

标签: c# dictionary

我做的与此处提到的完全相同:Which mechanism is a better way to extend Dictionary to deal with missing keys and why?

将getter发送到返回默认值的字典。它编译得很好,但任何试图使用它的人都会收到编译错误说...而且没有扩展方法'ObjectForKey'接受System.collections.Genericc.Dictionary类型的第一个参数。

这是定义

public static TValue ObjectForKey<TKey,TValue>(this Dictionary<TKey,TValue> dictionary, TKey key)
{
    TValue val = default(TValue);
    dictionary.TryGetValue(key,out val);
    return val;
}

以下是我尝试使用它的方法

Dictionary<string,object> dictionary = <stuff>
object val = dictionary.ObjectForKey("some string");

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您应该在静态(以使其成为扩展名)和公开(以使其可在课堂外访问)类中定义您的扩展方法

public static class MyExtensions
{
    public static TValue ObjectForKey<TKey,TValue>(this Dictionary<TKey,TValue> dictionary, TKey key)
    {
        TValue val = default(TValue);
        dictionary.TryGetValue(key,out val);
        return val;
    }
}