SomeRepository
类型未由 GetPublicClassesFromApplicationAssembly
返回。我希望返回所有类型的扩展 IRepository 的类。谁能看出问题所在?
private Type[] GetPublicClassesFromApplicationAssembly()
{
return typeof (SomeRepository).Assembly.GetExportedTypes()
.Where(t => t.IsClass)
.Where(t => t.IsAbstract == false)
.Where(r => r.IsAssignableFrom(typeof(IRepository<>)))
.OrderBy(t => t.Name)
.ToArray();
}
public class SomeRepository : IRepository<SomeDomainClass> {}
public interface IRepository<T> where T : PrimaryKeyBase {}
public class SomeDomainClass: PrimaryKeyBase {}
最佳答案
SomeRepository
不可从 IRepository<>
分配,这不是“真实”类型;它可以从 IRepository<SomeDomainClass>
分配.您需要使用 GetInterface
而不是 IsAssignableFrom
:
.Where(r => r.GetInterface("IRepository`1") != null
关于c# - 返回实现通用接口(interface)的类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312703/