Вывод обобщенного типа для Func
От: _NN_ www.nemerleweb.com
Дата: 02.03.15 12:06
Оценка:
Есть простой код:

public static TValue GetOrAdd<TKey, TValue>(IDictionary<TKey, TValue> dictionary, TKey key, Func<TKey, TValue> valueCreator)
{
    TValue value;
    if (dictionary.TryGetValue(key, out value))
        return value;
    value = valueCreator(key);
    dictionary.Add(key, value);
    return value;
}

// Использование
Dictionary<int, List<int>> d;
d.GetOrAdd(1, _ => new List<int>()).Add(2); // 1 -> [2]
d.GetOrAdd(1, _ => new List<int>()).Add(3); // 1 -> [2, 3]


Я хочу вместо '_ => new List<int>()' передать функцию которая создавала бы объект:
static Create<T, TParam>(TParam anything) { return new T(); }

d.GetOrAdd(1, Create<List<int>>)


Возможно ли как-нибудь избавится от явного указания типа <List<int>> ?
Т.е. получить простой код вида d.GetOrAdd(1, Create).
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.