仅知道通用基类的类型时,如何查找通用基类的派生类?
我尝试使用以下方法,但无法编译:
private Type FindRepositoryType(Type entityType)
{
var repoTypes = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.BaseType != null
&& t.BaseType.IsGenericType
&& t.BaseType.GetGenericTypeDefinition() == typeof(BaseRepository<entityType>))
.ToList();
return null;
}
var repoType = FindRepositoryType(typeof(Product));
我希望找到ProductRepository类型:
public class ProductRepository : BaseRepository<Product>
{
}
最佳答案
将您的Where
子句替换为:
.Where(t => t.BaseType != null
&& t.BaseType.IsGenericType
&& t.BaseType.GetGenericTypeDefinition() == typeof (BaseRepository<>)
&& t.BaseType.GetGenericArguments().Single() == entityType)