如何使用反射将属性的值设置为null

时间:2016-06-02 21:13:29

标签: c# reflection

我想使用反射将 LastName 的值设置为null。

public void SetPropertyValueToNull(Type t)
{
    PropertyInfo prop = t.GetProperty("LastName");
    prop.SetValue(t, null, null);
}

我正在传递 typeof(用户)作为另一个类的参数,其中用户是一个模型类,其中 LastName 作为其中一个属性。 它给了我对象与目标类型不匹配错误。

如何解决此问题?

2 个答案:

答案 0 :(得分:4)

  

它给我对象与目标类型错误不匹配。

SetValue方法的第一个参数是您要在其上设置属性值的对象实例。

您将t本身作为Type类型的第一个参数传递。您应该传递一个类型等于t的对象,例如在您的具体案例中User

您应该将方法更改为接受对象实例而不是Type,并且可以使用它来获取其类型,获取属性然后设置其值。

所以你的方法应该是这样的:

public void SetPropertyValueToNull(object instance)
{
    PropertyInfo prop = instance.GetType().GetProperty("LastName");
    prop.SetValue(instance, null, null); //We need this overload for .NET < 4.5
}

此方法适用于具有名为LastName的可写属性的任何对象。

答案 1 :(得分:0)

您需要传递对象实例,其他方面是将其设置为null