我做的与此处提到的完全相同: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");
有什么想法吗?
答案 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;
}
}