Получение компилятором C# вывода IList> при передаче List, где U реализует IInterface [дубликат]C#

Место общения программистов C#
Anonymous
Получение компилятором C# вывода IList> при передаче List, где U реализует IInterface [дубликат]

Сообщение Anonymous »

У меня есть функция, которая выглядит следующим образом:

Код: Выделить всё

    public void Proc(string paramName, IList paramValue)
where T : AncestorType, new()
{
}
Когда я вызываю его с помощью List, где U — это класс, реализующий IInterface, где T наследуется от AncestorType, разрешение перегрузки не работает.
Я, конечно, могу это сделать:

Код: Выделить всё

    public void Proc(string paramName, IList paramValue)
where R : IInterface
where T : AncestorType, new()
{
}
Но тогда мне нужно явно указать параметры типа при вызове функции.
Или я могу использовать LINQ, который выполняет ToList()< /code> явно создает IInterface, а не R, но это также немного громоздко.
Может быть, мне не хватает элегантного решения, при котором компилятор может все еще делаю такой вывод и избегаю явного приведения типов?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ed-listu-w

Вернуться в «C#»