2017-10-18 58 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

您可以提供有關實體價值的信息嗎? –