假设我有一个这样的接口:
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);
这将返回零项。甚至有可能做我想做的事情?
最佳答案
尝试这个:
var concretes =
Assembly
.GetAssembly(typeof (Concrete))
.GetTypes()
.Where(t =>
t.GetInterfaces()
.Any(i =>
i.IsGenericType && i.GetGenericTypeDefinition() == typeof(ITest<,>)))
.ToList();
关于c# - 反射(reflection)找到实现具有多个开放通用参数的接口(interface)的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33269787/