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

void MyMethod<T>() {
如果 ( typeof(T).Implements( 我的界面 ) ) {

  //Do something   

别的

  //Do something else 

}

也欢迎使用 C# 3.0 的答案,但请先放弃 .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) ) 
     ...

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top