2014-01-13 2 views
-2

В Java, я могу сказать,C# общий тип

public void foo(Class<? extends Bar>){} 

Но в C#, есть эквивалент?

public void foo(Type<? : Bar>){} //Doesn't work. 
public void foo(Type<?> where ? : Bar) //Still doesn't work. 
public void foo(Type<T> where T : Bar) //STILL doesn't work! 
+4

Да, вы действительно должны были сделать домашнюю работу, прежде чем задавать этот вопрос здесь, без обид. – albusshin

+0

Вы можете увидеть синтаксис довольно быстро в [doc] (http://msdn.microsoft.com/en-us/library/0zk36dx2%28v=vs.90%29.aspx), который также является моим первым хитом Google для вашего точного названия. –

+0

Нет, вы неправильно поняли. Я имею в виду тип, как в System.Type. Аргумент foo - это System.Type, и я хочу ограничить его, как я могу java.lang.Class. – AlphaModder

ответ

6

Для добавления универсального типа ограничения на способ, используйте следующий синтаксис:

public void foo<T>() where T : Bar 
{ 
    ... 
} 

Или добавить ограничение на класс (или структура/интерфейса), используйте:

public class Foo<T> where T : Bar 
{ 
    ... 
} 

Дальнейшее чтение

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