3
我與this one有類似的錯誤,但不幸的是不是簡單的解決方案。以下是代碼:PropertyInfo.SetValue對象與目標類型不匹配
public virtual void MapObject(T obj, IViewModel<T> 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
}
}
...
}
錯誤發生在指示的位置,指出「對象與目標類型不匹配」。看起來我正在傳遞正確的對象,因此我無法解決問題。
我也試圖採取this solution的意見,並檢查我試圖設置哪些屬性的類型拋出異常 - 有問題的屬性是一個字符串,並且setter似乎不會被破壞因爲它在正常的,不反射的情況下工作。
添加'objProp.PropertyType'和'dtoVal.GetType()'來監視調試窗口,在調用'objProp.SetValue(...)'的時候設置一個斷點。當斷點被擊中時,這兩個表達式評估的是什麼?他們需要是一樣的。 – 2012-01-30 04:05:09