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)
{
...
}
Другие вопросы по тегам