假设我有班级
public partial class MyEntities: DbContext
{
public DbSet<Customer> Customers {get;set;}
public DbSet<CustomerInfo> CustomerInfos {get;set;}
public DbSet<Order> Orders {get;set;}
// etc
}
如何找到具有通用类型Customer
?
换句话说,我正在寻找创建方法:
public PropertyInfo GetProperty<T>(){
var allProperties = TypeOf(MyEntities).GetProperties();
// implementation
}
如果我将方法称为GetProperty<Customer>()
,那么我想获得第一个属性。如果我将方法称为GetProperty<Order>()
,那么我想获得最后一个属性。如何用反射检查<Type>
?
答案 0 :(得分:7)
使用Type.IsGenericType
和Type.GetGenericArguments()
:
public PropertyInfo GetProperty<T>(){
var allProperties = TypeOf(MyEntities).GetProperties();
return allProperties.FirstOrDefault(prop => prop.PropertyType.IsGenericType
&& prop.PropertyType.GenericTypeArguments.FirstOrDefault() == typeof(T));
}