Каков более простой способ узнать, реализует ли параметр param в интерфейсе c # 2.0?

Например, с учетом метода типа param, я ищу что-то вроде выделенной жирным шрифтом

void MyMethod< T >() {
if ( typeof(T).Implements( IMyInterface ) ) {

  //Do something   

else

  //Do something else 

}

Anwers, использующие C# 3.0, также приветствуются, но сначала запустите .NET 2.0, пожалуйста;)

0
добавлено отредактировано
Просмотры: 30

3 ответы

Ï просто попробовал использовать

if( typeof(T).Equals(typeof(IMyInterface) ) 
     ...

И также работает, но ваш ответ кажется более надежным и был тем, что я искал. Благодаря!

0
добавлено
Это работало для меня в моем конкретном случае, но поведение - это тот, который вы описываете: он не работает, если вы хотите узнать, реализует ли объект IMyInterface, но утверждать, что тип T является IMyInterface. Спасибо за исправление!
добавлено автор Ricardo Amores, источник
Оно делает? он должен работать только от T, а именно IMyInterface
добавлено автор James Curran, источник

я думаю

if (typeof (IMyInterFace).IsAssignableFrom(typeof(T))

также должен работать: но я не вижу преимущества ...

0
добавлено

Type.IsAssignableFrom

if(typeof(IMyInterface).IsAssignableFrom(typeof(T)))
{
 //something
}
else
{
 //something else
}
0
добавлено