【问题标题】:How to set the value of a property to null using reflection如何使用反射将属性的值设置为空
【发布时间】:2016-06-02 21:13:29
【问题描述】:

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

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

我将 typeof(User) 作为另一个类的参数传递,其中 User 是一个模型类,它具有 LastName 作为其中之一特性。 它给了我对象与目标类型不匹配错误。

我该如何解决这个问题?

【问题讨论】:

  • 您要将属性设置为 null 的对象实例在哪里?

标签: c# reflection


【解决方案1】:

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

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 的可写属性的对象。

【讨论】:

    【解决方案2】:

    您需要传递对象实例,否则将其设置为 null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多