Entwickler-Ecke
C# - Die Sprache - methode eines Objektes durch String identifizieren
paul.-b - Do 03.12.09 00:26
Titel: methode eines Objektes durch String identifizieren
Hallo,
Also, ich habe eine Methode, die bekommt irgendein Objekt und zwei Strings übergeben.
z.b. sowas
SetFooValue(Object foo, String Variable, String Wert)
Also "foo" hat ein Attribut, dass genau so heißt wie der Inhalt des Strings "Variable".
Ihr ahnt es schon, ich möchte diesem den String "Wert" zuweisen.
Meine Frage ist, ob sowas in C# geht?
Danke
Paul
Christian S. - Do 03.12.09 00:33
Hallo!
Ja, das geht. Das Stichwort nennt sich Reflection. Sollte mit Bedacht eingesetzt werden, weil es recht langsam ist.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| class Blubb { public string Foo; }
class Program { static void Main(string[] args) { var b = new Blubb();
SetField(b, "Foo", "Bar");
Console.WriteLine(b.Foo); Console.ReadLine(); }
static void SetField(object o, string field, string value) { var t = o.GetType();
var fieldInfo = t.GetField(field); if (fieldInfo == null) throw new Exception("Feld jibbet nisch");
fieldInfo.SetValue(o, value); } } |
Grüße
Christian
P.S.: "Attribute" sind in .NET was anderes, ich nahm einfach mal an, dass Du ein Feld meintest. Die sollte man übrigens eigentlich nicht public machen, sondern nur über Properties veröffentlichen.
paul.-b - Do 03.12.09 01:58
saubere Antwort.
Vielen Dank!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!