我正在尝试使用该propertyInfo.SetValue()
方法通过反射设置对象属性值,并且出现异常“对象与目标类型不匹配”。这真的没有意义(至少对我来说!),因为我只是想在一个带有字符串替换值的对象上设置一个简单的字符串属性。这是一个代码片段 - 它包含在一个递归函数中,因此还有更多代码,但这是胆量:
PropertyInfo fieldPropertyInfo = businessObject.GetType().GetProperties().FirstOrDefault(f => f.Name.ToLower() == piecesLeft[0].ToLower());
businessObject = fieldPropertyInfo.GetValue(businessObject, null);
fieldPropertyInfo.SetValue(businessObject, replacementValue, null);
我已经通过比较验证了businessObject" and
replacementValue` 是相同的类型,结果返回 true:
businessObject.GetType() == replacementValue.GetType()