Ton*_*Nam 2 c# generics reflection
假设我有班级
public partial class MyEntities: DbContext
{
public DbSet<Customer> Customers {get;set;}
public DbSet<CustomerInfo> CustomerInfos {get;set;}
public DbSet<Order> Orders {get;set;}
// etc
}
Run Code Online (Sandbox Code Playgroud)
如何找到具有泛型类型的属性Customer?
换句话说,我正在寻找创建方法:
public PropertyInfo GetProperty<T>(){
var allProperties = TypeOf(MyEntities).GetProperties();
// implementation
}
Run Code Online (Sandbox Code Playgroud)
如果我调用该方法,GetProperty<Customer>()那么我想得到第一个属性.如果我调用该方法,GetProperty<Order>()那么我想得到最后一个属性.我怎样才能<Type>用反射检查?
使用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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |