gpt4 book ai didi

c# - 当你只知道通用基类的类型时,如何找到通用基类的派生类?

转载 作者:行者123 更新时间:2023-12-01 21:42:40 26 4
gpt4 key购买 nike

当你只知道通用基类的类型时,如何找到通用基类的派生类?

我尝试过以下方法,但无法编译:

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)

关于c# - 当你只知道通用基类的类型时,如何找到通用基类的派生类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com