我想使用反射将LastName的值设置为 null。
public void SetPropertyValueToNull(Type t)
{
PropertyInfo prop = t.GetProperty("LastName");
prop.SetValue(t, null, null);
}
Run Code Online (Sandbox Code Playgroud)
我将typeof(User)作为来自另一个类的参数传递,其中User是一个模型类,它的LastName作为属性之一。它给了我对象与目标类型不匹配的错误。
我该如何解决这个问题?
它给了我对象与目标类型不匹配的错误。
该SetValue方法的第一个参数是要在其上设置属性值的对象实例。
您将t自身作为第一个类型的参数传递Type。您应该传递一个类型等于 的对象t,例如User在您的特定情况下。
你应该改变你的方法来接受一个对象实例而不是 aType并且你可以使用它来获取它的类型,获取属性然后设置它的值。
所以你的方法应该是这样的:
public void SetPropertyValueToNull(object instance)
{
PropertyInfo prop = instance.GetType().GetProperty("LastName");
prop.SetValue(instance, null, null); //We need this overload for .NET < 4.5
}
Run Code Online (Sandbox Code Playgroud)
此方法适用于具有名为 的可写属性的任何对象LastName。