2017-10-18 35 views
-1

我正在读取特定类型的实体的所有属性。带反射的GetProperties也应返回空值<T>

我得到了我想要的所有属性,除了Nullable<int>

var properties = entities.GetType().GetGenericArguments().Single() 
.GetProperties(BindingFlags.Instance | BindingFlags.Public) 
.Where(p => Type.GetTypeCode(p.PropertyType) != TypeCode.Object).ToList(); 

怎么办我必须改变我的查询也得到Nullable<T>类型?

回答

1

Nullable<T>将计为一个TypeCode.Object,所以你需要改变你的查询:

.Where( 
    p => Type.GetTypeCode(p.PropertyType) != TypeCode.Object || 
    (p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))).ToList(); 
0
var properties1 = new List<PropertyInfo>(); 
     foreach (var p in entities.GetType().GetGenericArguments().Single().GetProperties(BindingFlags.Instance | BindingFlags.Public)) 
     { 
      if (p.PropertyType.IsAssignableFrom(c: typeof(Nullable<>)) || Type.GetTypeCode(p.PropertyType) != TypeCode.Object) properties1.Add(p); 
     } 
+0

不,不行! Nullable 不存在... – Elisabeth

+0

您可以提供有关实体价值的信息吗? –