我想为IDictionary集合Exception.Data创建一个扩展方法,它允许我将项添加到字典中,而不必确保密钥是唯一的。
我无法显示扩展方法。
public static void AddUnique<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue value)
{
}
你会像
一样使用它exception.Data.AddUnique("key", value);
我做错了什么?这甚至可能吗?
答案 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)
{
}