0
我想設置值的許多對象的屬性。 我有一個函數接收2個參數MyStructuredObjects和MyObject MyStructuredObjects有一個MyObjects列表。 這個函數是一個重新刪除大量'if'的工廠。SetValue方法拋出異常時使用反射
我想使用永遠相同的對象,因爲它在循環中使用的功能。如果可能的話。 我得到了異常'對象不符合目標'。 對不起,發佈這個,但我沒有發現這樣的問題,使用對象結構中的列表。
請看:
public class MyStructuredObjects
{
public List<MyObject1> Object1 { get; set; }
public List<MyObject2> Object2 { get; set; }
public List<MyObject3> Object3 { get; set; }
public List<MyObject4> Object4 { get; set; }
public List<MyObject5> Object5 { get; set; }
}
private void SetValuesToObjectsToIntegrate<T>(ref MyStructuredObjects returnedObject, T obj)
{
Type t = obj.GetType();
var propertyInfo = new ObjectsToIntegrate().GetType().GetProperties();
var instance = Activator.CreateInstance(t);
foreach (var item in returnedObject.GetType().GetProperties())
{
var itemType = item.PropertyType;
if (t == itemType) // PASSING BY HERE OK , it finds the same type :P
{
item.SetValue(t, Convert.ChangeType(obj, item.PropertyType), null);
}
}
}
更新:代碼應該是:
item.SetValue(instance, Convert.ChangeType(obj, item.PropertyType), null);
'SetValue'預期的*實例*。你只是通過它的類型。你可能想使用'item.SetValue(returnedObject ...' – Rob
嗨羅布,更改爲'代碼 item.SetValue(實例,Convert.ChangeType(obj,item.PropertyType),null);' 但是不工作 –
@Summerson - 請不要編輯您的問題以使評論失效。當嘗試幫助您時,歷史記錄很重要。 – Enigmativity