2016-04-29 13 views
0

Ich verwende AutoMapper, um Objekte einander zuzuordnen. Eines meiner Objekte hat mehrere Eigenschaften, die Sammlungen anderer Objekte sind. Ich habe versucht, einen generischen Weg zu finden, um die verschiedenen Objekte abzubilden, ohne zu wissen, was sie sind, bis zur Laufzeit. Hier ist mein Beispielcode so weit:Dynamisches Objekt zur Auflistungseigenschaft des übergeordneten Objekts hinzufügen

Dies macht die Zuordnung problemlos unabhängig von der Art. Das Problem, mit dem ich zu kämpfen habe, ist am Ende dieses Codes, wo ich das neue Objekt der entsprechenden Sammlung Eigenschaft des übergeordneten Objekts hinzufügen muss.

Wie kann ich diesen Code ändern, um das neue Objekt der entsprechenden Sammlung hinzuzufügen?

+0

Warum erhalten Sie die entsprechende Collection-Eigenschaft nicht durch Reflektion, dann fügen Sie dort ein Objekt hinzu? – Evk

+0

@Evk Das wäre wunderbar. Ich habe darum gekämpft, genau das zu tun. Ich entschuldige mich dafür, dass ich es vorher nicht erwähnt habe. Ich hätte einige der verschiedenen Dinge gezeigt, die ich versucht habe, aber es gab so viel Wegwerf-Code, ich bin mir nicht einmal sicher, ob es hilfreich gewesen wäre. – Sesame

Antwort

0

Wenn ich Sie richtig verstehe, können Sie einfach Sammlung Eigentum über Reflexion bekommen, dann neuer Wert dort eintragen - wie folgt aus:

class Program { 
    static void Main(string[] args) {    
     var person = new Person(); 
     var prop = person.GetType().GetProperty("Siblings"); 
     var currentValue = (IList) prop.GetValue(person); 
     currentValue.Add("new object"); 
     Console.WriteLine(person.Siblings); 
    } 
} 

public class Person { 
    public Person() { 
     Siblings = new ObservableCollection<string>(); 
    } 
    public ObservableCollection<string> Siblings { get; private set; } 
} 

Wenn Sammlung Eigenschaft null sein kann - sicherzustellen, dass Sie es initialisieren, bevor Wert hinzufügen.

Verwandte Themen