web-dev-qa-db-ja.com

辞書拡張メソッドを作成する方法は?

Key/Valueのデータ型とは独立して機能するDictionary拡張機能を作成しようとしています。 objectデータ型を使用してパスしようとしましたが、どのタイプでも機能すると想定しています。

私のコード:

 public static class DictionaryExtensionsClass
    {
        public static void AddFormat(this Dictionary< ?? unknow type/*object*/, ??unknow type/*object*/> Dic, ??unknow type/*object*/ Key, string str, params object[] arglist)
        {
            Dic.Add(Key, String.Format(str, arglist));
        }
    }
16
Jack

メソッドをジェネリックにするだけです。

public static void AddFormat<TKey>(this Dictionary<TKey, string> dictionary,
    TKey key,
    string formatString,
    params object[] argList)
{
    dictionary.Add(key, string.Format(formatString, argList));
}

keyタイプでは、値がhavestring(または潜在的にobjectまたはstringは、文字列値を追加することを前提として、実装していると思います)。

残念ながら、ジェネリック型制約では、「stringが有効な値である値型のみを許可する」という制約を実際に表現することはできません。

35
Jon Skeet