Entwickler-Ecke
C# - Die Sprache - Enum Eintrag mit Klasse identifizieren.
Garby - Mo 16.01.06 17:18
Titel: Enum Eintrag mit Klasse identifizieren.
Hallo,
Der Titel ist ein wenig komisch ;)
Ich möchte in C# einen Enum Eintrag mittels eines Klassen Arrays einer Klasse zuordnen.
In Delphi schaut das so aus:
Delphi-Quelltext
1: 2: 3: 4:
| type TEnum = (abButton, abListe); const EnumTrans: array[TEnum] of TClass = (TButton, TList); |
Anwendungsbeispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var abc: TObject; begin abc := TList.Create; try if abc is EnumTrans[abListe] then ShowMessage('Liste') else if abc is EnumTrans[abButton] then ShowMessage('Button'); finally abc.Free; end; end; |
Wie würdet ihr so was in C# realisieren?
Danke
Walter
Xqgene - Mi 25.01.06 10:12
hm..ich verstehe nicht ganz, wozu hier Enum überhaupt gut ist, liegt wohl aber an meinen verstaubten Delphi Kenntnissen.
ich würde es einfach so machen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| object o = new Button(); .....
if (o is Button) { } if (o is ArrayList) { } |
Garby - Mi 25.01.06 11:04
Hallo,
Dieses Anwendungsbeispiel zeigt den Nutzen des Enums besser:
Delphi-Quelltext
1:
| with EnumTrans[abListe].Create(nil) do begin... |
Xqgene - Mi 25.01.06 11:51
wenn es nur um das Speichern der Objekte in einer Liste geht, kann man eine Hashtable nutzen oder noch besser (ab .NET 2.0) eine SortedList
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| enum MyEnum { Button, Label, Form } ..... SortedList<MyEnum, object> list = new SortedList<MyEnum, object>(); ..... list[MyEnum.Button] = new Button(); ..... if (list[MyEnum.Button] is Button) MessageBox.Show("OK"); |
Problem ist das Erzeugen der Objekte a lá
Delphi-Quelltext
1:
| EnumTrans[abListe].Create(nil) |
so geht es in C# ohne Weiteres nicht.
eine Möglichkeit wäre die Reflection zu nutzen
Garby - Mi 25.01.06 14:53
OK, Danke.
Ich werde mir halt was anderes ausdenken müssen.
Walter
Xqgene - Mi 25.01.06 15:00
was willst du denn erreichen?
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!