确定是否可以为反射属性分配给定值

时间:2011-03-08 13:58:14

标签: c# .net reflection

确定是否可以为反射属性指定给定值的最简单方法是什么?

我需要的方法签名是:

public static bool IsAssignable(PropertyInfo property, object value)
{        
    throw new NotImplementedException();
}

此方法应适用于值类型和引用类型,并且这两个值都为null。

谢谢你的帮助。

Manitra。

3 个答案:

答案 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。