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

如何为Exception.Data添加IDictionary扩展方法,exception,extension-methods,idictionary,Exception,Extension Methods,Idictionary,我想为IDictionary collection Exception.Data创建一个扩展方法,该方法允许我将项添加到字典中,而无需确保键是唯一的 我无法显示扩展方法 public static void AddUnique<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue value) { } 我做错了什么?这可能吗?您在哪里声明这一点?理想情

我想为IDictionary collection Exception.Data创建一个扩展方法,该方法允许我将项添加到字典中,而无需确保键是唯一的

我无法显示扩展方法

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

    }

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

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

namespace MyNamespace
{
    public static class MyExtensions
    {

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

注意:您还将key作为key,这是一个字符串文本。如果TKey不是字符串,则可能不起作用。

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

System.Collections.Generic.IDictionary System.Collections.IDictionary

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

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

    }

它很好用。发布更多代码,如完整扩展方法类。发现问题-我的类型为System.Collections.Generic.IDictionary,而不是System.Collections.IDictionary。好好想想,谢谢你的帮助!扩展方法位于同一命名空间中的静态类内。发现问题-我的类型为System.Collections.Generic.IDictionary,而不是System.Collections.IDictionary。好好想想,谢谢你的帮助!
using MyNamespace;  // if required

//  in a method
exception.Data.AddUnique(key, value);
    public static void AddUnique<TKey, TValue>(this System.Collections.IDictionary dictionary, TKey key, TValue value)
    {

    }