19

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

1 に答える 1

42

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

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

文字列値を追加する場合、値は(または潜在的に、または実装するインターフェースであると思われる)必要があるため、キータイプでのみジェネリックであることに注意してください。stringobjectstring

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

于 2012-06-02T15:03:47.330 に答える