有什么更简单的方法知道类型参数是否在c#2.0中实现了接口?

时间:2020-03-06 14:23:05  来源:igfitidea点击:

例如,给定类型参数方法,我正在寻找粗体部分

void MyMethod< T >() {

  if ( typeof(T).Implements( IMyInterface ) )
  {

  //Do something   

  
  else

  //Do something else 

  
  }

也欢迎使用C3.0的Anwer,但请先删除.NET 2.0的;)

解决方案

Type.IsAssignableFrom

if(typeof(IMyInterface).IsAssignableFrom(typeof(T)))
{
  // something
}
else
{
  // something else
}

我认为

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

应该也可以工作:但是我没有看到优势...

刚刚尝试使用

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

也可以,但是答案似乎更可靠,而且正是我所寻找的。谢谢!