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

时间:2008-09-18 19:27:21

标签: c# reflection types

例如,给定一个类型参数方法我正在寻找类似粗体

的部分
  

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

  //Do something   
     

否则

  //Do something else 
     

}

使用C#3.0的Anwers也很受欢迎,但首先请删除.NET 2.0的那些;)

3 个答案:

答案 0 :(得分:6)

Type.IsAssignableFrom

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

答案 1 :(得分:1)

我认为

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

也应该有效:但我没有看到优势...

答案 2 :(得分:0)

我刚尝试使用

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

并且也有效,但你的答案似乎更强大,而且正是我所寻求的。谢谢!