2010-01-05 3 views
2

Представьте себе следующий методКак указать общий тип должен реализовать другой общий тип?

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

Это не работает:

Ошибка 16 тип или пространство имен «T2» не может быть найден (вы пропали без вести с помощью директивы или ссылка на сборку ?)

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

+0

То, что вы намереваетесь сделать, не ясно, потому что ваш заголовок сформулирован неправильно. Это должно быть: «Как указать общий метод для принятия параметра, который является общим типом?». – James

ответ

9

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

public void SomeMethod<T1,T2>(T1 param) 
    where T1 : List<T2> 
{ 
} 
3

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

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

Хорошая точка !!!!!! –

Смежные вопросы