Как указать универсальный тип должен реализовать другой универсальный тип? - PullRequest
2 голосов
/ 05 января 2010

Представьте себе следующий метод

public void SomeMethod<T>(T param)
    where T: List<T2>
{
}

Не работает:

Ошибка 16 Не удалось найти тип или имя пространства имен 'T2' (отсутствует директива using или ссылка на сборку?)

Как мне достичь того, что я явно собирался сделать?

Ответы [ 2 ]

9 голосов
/ 05 января 2010

Для этого вам нужно указать дополнительный универсальный параметр

public void SomeMethod<T1,T2>(T1 param)
  where T1 : List<T2>
{
}
3 голосов
/ 05 января 2010

В качестве побочного ответа на принятое решение, поскольку T явно связано с T2, почему T вообще?

public void SomeMethod<T2>(List<T2> listParam) 
{
}
...