我想使用反射将 LastName 的值设置为null。
public void SetPropertyValueToNull(Type t)
{
PropertyInfo prop = t.GetProperty("LastName");
prop.SetValue(t, null, null);
}
我正在传递 typeof(用户)作为另一个类的参数,其中用户是一个模型类,其中 LastName 作为其中一个属性。 它给了我对象与目标类型不匹配错误。
如何解决此问题?
答案 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