Каков более простой способ узнать, реализует ли параметр 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
добавлено отредактировано
Просмотры: 116

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
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot