我想通过指定点分隔路径来更新任何公共属性中的值。
但是每当我调用我的方法时,我都会收到一条错误消息:
pi.SetValue(instance, value1, null);
错误信息:
对象与目标类型不匹配。
我的方法:
private void SetPathValue(object instance, string path, object value)
{
string[] pp = path.Split('.');
Type t = instance.GetType();
for (int i = 0; i < pp.Length; i++)
{
PropertyInfo pi = t.GetProperty(pp[i]);
if (pi == null)
{
throw new ArgumentException("Properties path is not correct");
}
else
{
instance = pi.GetValue(instance, null);
t = pi.PropertyType;
if (i == pp.Length - 1)//last
{
// Type targetType = IsNullableType(pi.PropertyType) ? Nullable.GetUnderlyingType(pi.PropertyType) : pi.PropertyType;
var value1 = Convert.ChangeType(value, instance.GetType());
pi.SetValue(instance, value1, null);//ERROR
}
}
}
}
private static bool IsNullableType(Type type)
{
return type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>));
}
慕盖茨4494581
手掌心
相关分类