我们说我有这样的界面:
public interface ITest<T1, T2>
{
}
这样的课程:
public class Concrete : ITest<int, string>
{
}
使用反射,我怎样才能找到这个具体的类?我尝试过以下操作,但它不起作用,因为我没有指定泛型类型参数。
var concretes = Assembly.GetAssembly(typeof(Concrete)).GetTypes()
.Where(x => x.IsAssignableFrom(typeof(ITest<,>))
&& !x.IsInterface);
这将返回零项。甚至可以做我想做的事情吗?
答案 0 :(得分:3)
试试这个:
var concretes =
Assembly
.GetAssembly(typeof (Concrete))
.GetTypes()
.Where(t =>
t.GetInterfaces()
.Any(i =>
i.IsGenericType && i.GetGenericTypeDefinition() == typeof(ITest<,>)))
.ToList();