如何为Exception.Data添加IDictionary扩展方法

时间:2012-06-14 18:41:05

标签: exception extension-methods idictionary

我想为IDictionary集合Exception.Data创建一个扩展方法,它允许我将项添加到字典中,而不必确保密钥是唯一的。

我无法显示扩展方法。

    public static void AddUnique<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue value)
    {

    }

你会像

一样使用它
exception.Data.AddUnique("key", value);

我做错了什么?这甚至可能吗?

2 个答案:

答案 0 :(得分:0)

你在哪里宣布这个?理想情况下,您应该有一个静态类来包含此方法。然后,如果它位于不同的命名空间中,则需要确保您具有该命名空间的using语句。

namespace MyNamespace
{
    public static class MyExtensions
    {

        public static void AddUnique<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, 
                                                   TKey key, 
                                                   TValue value)
        {
            // implementation code
        }
    }
}

以后......

using MyNamespace;  // if required

//  in a method
exception.Data.AddUnique(key, value);

注意:您还有作为&#34;键&#34; ,这是一个字符串文字。如果您的TKey不是字符串,则可能无效。

答案 1 :(得分:0)

扩展方法中的类型必须与Exception.Data的类型完全匹配,即System.Collections.IDictionary。

System.Collections.Generic.IDictionary&lt;&gt; System.Collections.IDictionary

System.Collections.IDictionary没有类型参数,因此正确的代码是

    public static void AddUnique<TKey, TValue>(this System.Collections.IDictionary dictionary, TKey key, TValue value)
    {

    }