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」としてキー もありました。TKeyが文字列でない場合は、機能しない可能性があります。

于 2012-06-14T18:46:26.653 に答える
0

拡張メソッドの型は、System.Collections.IDictionaryであるException.Dataの型と正確に一致する必要があります。

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 に答える