带反射的GetProperties也应返回空值
问题描述:
我正在读取特定类型的实体的所有属性。带反射的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>
类型?
答
Nullable<T>
将计为一个TypeCode.Object
,所以你需要改变你的查询:
.Where(
p => Type.GetTypeCode(p.PropertyType) != TypeCode.Object ||
(p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))).ToList();
答
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);
}
不,不行! Nullable不存在... –
Elisabeth
您可以提供有关实体价值的信息吗? –