确定是否可以为反射属性指定给定值的最简单方法是什么?
我需要的方法签名是:
public static bool IsAssignable(PropertyInfo property, object value)
{
throw new NotImplementedException();
}
此方法应适用于值类型和引用类型,并且这两个值都为null。
谢谢你的帮助。
Manitra。
答案 0 :(得分:3)
您可能正在寻找Type.IsAssignableFrom
答案 1 :(得分:2)
您无法确定传递为null
的{{1}}的类型。您只能说该属性是否能够object
。
您可以采用编译时类型:
null
答案 2 :(得分:1)
感谢Stefan和John的回复,以及“确定是否可以将反射属性赋值为null”的问题,以下是我将使用的代码:
public static bool IsAssignable(PropertyInfo property, object value)
{
if (value == null && property.PropertyType.IsValueType && Nullable.GetUnderlyingType(property.PropertyType) == null)
return false;
if (value != null && !property.PropertyType.IsAssignableFrom(value.GetType()))
return false;
return true;
}
这适用于所有情况,并且采用纯粹松散的方式。
Manitra。