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/