我試圖使用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()
賓果 - 感謝清晰,簡潔的代碼示例。謝謝! –