找出是一个通用类型实现一个接口

时间:2012-07-16 11:41:42

标签: c# generics

在下面的方法中,有一种方法可以知道类型T是否实现了特定的接口IMyInterface2

public IList<T> MyMethod<T>() where T : class, IMyInterface1
{

   return myResult;
}

更新:

然后我像这样使用

MyMethod<MyClass>();

Myclass实施IMyInterface1IMyInterface2

MyMethod<MyClassB>();

Myclass实施IMyInterface1 NOT IMyInterface2

2 个答案:

答案 0 :(得分:4)

当然有:

public IList<T> MyMethod<T>() where T : class, IMyInterface1
{
    if (typeof(IMyInterface2).IsAssignableFrom(typeof(T)))
    {
        // code here
    }

    return myResult;
}

答案 1 :(得分:1)

与任何其他对象一样,除非您必须使用typeof而不是.GetType()

var implements = typeof(IMyInterface2).IsAssignableFrom(typeof(T));