0

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

我无法显示扩展方法。

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

    }

你会像这样使用它

exception.Data.AddUnique("key", value);

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

4

2 回答 2

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);

注意: 您还拥有key作为"key",这是一个字符串文字。如果您的 TKey 不是字符串,则可能无法正常工作。

于 2012-06-14T18:46:26.653 回答
0

扩展方法中的类型必须与 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)
    {

    }
于 2012-06-14T19:01:18.033 回答