我试图使用propertyInfo.SetValue()方法来设置对象属性值与反射,我得到异常“对象不匹配目标类型”。它没有任何意义(至少对我来说),因为我只是试图在一个字符串替换值的对象上设置一个简单的字符串属性。这里有一个代码片段 - 这是包含一个递归函数所以有一大堆更多的代码中,但这是胆量:C#反射 - 对象与目标类型不匹配
PropertyInfo fieldPropertyInfo = businessObject.GetType().GetProperties().FirstOrDefault(f => f.Name.ToLower() == piecesLeft[0].ToLower());
businessObject = fieldPropertyInfo.GetValue(businessObject, null);
fieldPropertyInfo.SetValue(businessObject, replacementValue, null);
我验证过“BusinessObject的”和“replacementValue”,都属于同一类型的这样做比较,这回真:
businessObject.GetType() == replacementValue.GetType()
宾果 - 感谢清晰,简洁的代码示例。谢谢! –