该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 {}
Run Code Online (Sandbox Code Playgroud)
SomeRepository不可分配IRepository<>,不是"真实"类型; 它是可分配的IRepository<SomeDomainClass>.您需要使用GetInterface而不是IsAssignableFrom:
.Where(r => r.GetInterface("IRepository`1") != null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |