So erstellen Sie ein List<unbekannter Typ zur compile-Zeit> und kopieren der Elemente über System.Reflexion.PropertyInfo

Ich bin gekommen, über etwas Recht Komplexes. Ich wäre dankbar, wenn jemand helfen kann.

1) ich muss eine Liste erstellen<> unbekannter Typ zur compile-Zeit. Das habe ich bereits erreicht.

 Type customList = typeof(List<>).MakeGenericType(tempType);
 object objectList = (List<object>)Activator.CreateInstance(customList);

"temptype" ist der benutzerdefinierte Typ das war es auch schon geholt.

2) Jetzt habe ich PropertyInfo - Objekt, das die Liste aus dem ich kopieren alle Elemente der Instanz, die die ich gerade erstellt haben "objectList"

3) Dann muss ich Durchlaufen und Zugriff auf die Elemente der "objectList", als ob es eine "System.Generisches.Liste".

Schneiden eine lange Geschichte kurz, mit der spiegelung, die ich brauche, um zu extrahieren, eine Eigenschaft, die eine Liste und haben es als eine Instanz für die weitere Verwendung. Ihre Vorschläge würden geschätzt. Vielen Dank im Voraus.

Umair

  • Ich weiß nicht, was Sie versuchen zu erreichen, aber wenn Sie sich selbst zu finden versuchen, machen Sie eine Liste<> von unbekannten Arten, oft die Antwort: eine nicht-generische Liste statt.
  • Haben Sie irgendwelche Informationen über die Art, die gebunden werden, um die Liste in der Art konstruiert? Ist es möglich zu beschränken, Generika um ein Wert-oder Referenz-Typ oder auch, um sicherzustellen, dass es erfüllt eine Reihe von Schnittstellen. Ich habe es nicht fertig bei der hand, aber Kapitel 3 von John Skeet ist "C# in Depth" bedeutet einen tiefen Tauchgang an diesem Thema.
  • Ich glaube, Sie brauchen nicht zu schneiden eine lange Geschichte kurz, und stattdessen lieber mehr detail. Etwas mehr code zeigen, was Sie bereits definitiv helfen würde.
  • Ihr code nicht ausgeführt, wenn durch das casting auf andere Art... Wenn Sie zeigen Sie Ihre Ziel, wie die paar Zeilen code, kann jemand in der Lage zu helfen, Sie besser. Bislang ist unklar, was Sie haben ärger mit...
  • Charlie: könnten Sie etwas konkreter über die nicht-generische Liste. Wie gehe ich am besten vor.
  • Alexei Levenkov: Als ich erwähnte, dass ich brauchen, um zu Graben Sie sich eine Liste<unknown type> (Eigenschaft/PropertyInfo) eines Objekts können sagen, "X" über die Reflexion. Außer der Typ des Objekts "X" nichts zur Kompilierzeit bekannt ist. Und ich brauche ein Objekt (Liste<unknown type>), muss eine exakte Replik des angesehenen (Eigentum/PropertyInfo) des Objekts "X". So dass ich Zugriff auf die Elemente der Liste. Ich hoffe ich bin jetzt klar. Ihre Vorschläge würden geschätzt

InformationsquelleAutor Omayr | 2011-04-26
Schreibe einen Kommentar