PropertyInfo.SetValue对象与目标类型不匹配
我有一个类似的错误,但不幸的是不是同一个简单的解决方案。 这是代码:
public virtual void MapObject(T obj, IViewModel viewModel, ITPSDataAccess dataAccess) { var objProps = obj.GetType().GetProperties(); var dtoProps = viewModel.GetType().GetProperties(); foreach (var dtoProp in dtoProps) { var objProp = dtoProps.SingleOrDefault(x => x.Name == dtoProp.Name); if (objProp != null) { var dtoVal = dtoProp.GetValue(viewModel, null); objProp.SetValue(obj, dtoVal, null); // ERROR HERE } } ... }
错误发生在指示的位置,表示“对象与目标类型不匹配”。 看起来我正在传递要设置的正确对象 – 因此我无法解决问题。
我也尝试接受这个解决方案的建议,并检查我试图设置的属性类型抛出exception – 有问题的属性是一个字符串,并且setter似乎没有被破坏,因为它工作在正常,不反思的情况下。
错误似乎在这里:
var objProp = dtoProps.SingleOrDefault(x => x.Name == dtoProp.Name);
我想你的意思是:
var objProp = objProps.SingleOrDefault(x => x.Name == dtoProp.Name);