C# неограниченный универсальный тип как ограничение
Можно ли иметь общее ограничение, которое является неограниченным универсальным типом?
Например:
public T DoSomething<T>(T dictionary) where T : IDictionary<,>
{
...
}
Редактировать: просто для объяснения контекста, я хочу ограничить использование метода IDictionary, но для самого метода не имеет значения, какие именно TKey и TValue.
3 ответа
Решение
Это невозможно, вам нужно указать параметры типа:
public T DoSomething<T, TKey, TValue>(T dictionary) where T : IDictionary<TKey, TValue> { ... }
В rosylin github есть проблема, однако это еще не сделано. Так что сейчас это невозможно, но я ожидаю, что это будет относительно скоро.
Нет, ты не можешь этого сделать. Может быть, вы можете использовать
public IDictionary<TKey, TValue> DoSomething<TKey, TValue>(IDictionary<TKey, TValue> dictionary)
{
...
}