2017-08-08 2 views
1

Ich versuche, ein Element zu einer Liste hinzuzufügen, die ich durch Reflexion abgerufen habe.Hinzufügen eines Elements zur Liste durch Reflexion

Die folgende Zeile

property.PropertyType.GetMethod("Add").Invoke(entity, new[] { innerValue }); 

wird einen Fehler werfen

Objekt nicht Zielart“überein (Reflection.TargetException)

Aber die Typen sollte Spiel:

string listType=property.PropertyType().FullName; // System.Collections.Generic.List`1[[My.Entities.Task, My.Entities, Version=1.4.6429.20475, Culture=neutral, PublicKeyToken=null]] 
string elementType=innerValue.GetType().FullName; // My.Entities.Task 

entity ist ein Objekt, das die Eigenschaft über

Was stimmt hier nicht enthält?

Antwort

4

Sie versuchen, Add auf entitiy aufzurufen, nicht auf der Liste in entity Eigentum enthalten.

Holen Sie sich das Wert der Immobilie (die in der Liste sein sollte), und rufen Sie Add auf dieser Referenz:

var list = property.GetValue(entity); 
property.PropertyType.GetMethod("Add").Invoke(list, new[] { innerValue }); 
Verwandte Themen