Hallo!
ich habe ein dynamisches Objekt. Die Namen der Felder kenn ich erst zur Laufzeit.
Das Anlegen der Felder und deren Wert Zuweiseung geht, wenn ich es direkt mache, aber nicht mehr, wenn ich über die Methode SetValue arbeiten will.
C#-Quelltext
1: 2: 3: 4:
| using System.Dynamic; using System.Reflection; using System.Text.RegularExpressions; using MBLib.SystemTools.Dynamic; |
....
zum Beispiel
dynamic obj = new Person();
obj.NachName = "Mueller";
obj.Vorname = "Anton";
obj.Alter = 23;
// das funktioniert bis hierher
Da ich aber noch nicht die Feldname kenne, möchte ich gern über die Refelction arbeiten. Und da scheine ich etwas Grundsätzliches nicht zu verstehen:
ich würde es so machen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| string neuesFeld = "AnzahlKinder"; int value = 2;
Type t = typeof(Person); FieldInfo myFieldInfo = t.GetField(neuesFeld , BindingFlags.NonPublic | BindingFlags.Instance); myFieldInfo.SetValue(obj,value); |
und da verstehe ich nicht, warum ich als parameter ein Objekt geben soll und keinen Wert eingeben darf.
wie weise ich den Wert 2 zum Feld AnzahlKinder zu? Warum erwartet diese Methode SetValue ein Objekt?
Ich wäre dankbar, wenn jemand mir ein Beispiel geben könnte, wie ich es realisieren soll,
Vielen Dank im Voraus
frenchcancan
Moderiert von
Kha: Topic aus WinForms verschoben am Mi 11.05.2011 um 17:53