我有这些课:
public abstract class BaseClass{}
public class CustomerService : BaseClass<Customer>{}
public class ProductService : BaseClass<Product>{}
public class UserService : BaseClass<User>{}
在运行时,我有以下类型:例如entity.GetType()
,它将返回通用类型Customer
。
CustomerService
如果我Customer
在运行时有类型,如何获取类型?
它们都在同一个命名空间中。
谢谢
如果您只是在寻找一个直接相关的基本类型的类,则BaseClass<T>
可以使用如下代码:
var targetBaseType = typeof(BaseClass<>).MakeGenericType(entityType);
var type = typeof(BaseClass<>).Assembly.GetTypes()
.Single(t => t.BaseType == targetBaseType);
为了避免每次都进行线性搜索,您可能需要创建一个Dictionary<Type, Type>
键,键是实体类型,值是服务类型。您可以使用反射进行设置,也可以手动创建。那真的很简单:
var type = serviceTypeDictionary[entityType];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句