Подтвердить что ты не робот

Как сделать словарные методы расширения?

Я пытаюсь написать расширение Dictionary, которое работает независимо от типов данных Key/Value. Я попытался передать его, используя тип данных 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));
        }
    }
4b9b3361

Ответ 1

Вы просто создаете метод generic:

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

Обратите внимание, что он только генерируется в типе ключа, так как значение должно быть string (или потенциально object или интерфейс, который реализуется string), учитывая, что вы собираетесь добавить строку значение для него.

К сожалению, вы действительно не можете выразить ограничение "разрешать типы значений, где string - допустимое значение" в ограничении общего типа.