Hallo Zusammen,
wie aus dem Titel hervorgeht, möchte ich gerne eure Meinung dazu wie man Enums vermeiden kann. Der Wunsch dazu ergibt sich aus einem Problem, das ich während der Spieleentwicklung habe. Folgend meine Einsatzgebiete für Enums.
Typ-Check
Wenn ich viele Objekte in einer Liste habe, die als Typ ein Interface hat, möchte ich beim entnehmen der Objekte gerne das Objekt wieder von einer spezifischen Klasse haben. Um nicht gegen jede Möglichkeit zu casten, gucke ich nach einem Enum.
Beispiel:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var waffe = new Waffe();
var buch = new Buch();
var items = new List<Item>();
items.Add(waffe);
items.Add(buch);
foreach (var item in items)
{
switch (item.typ)
{
case typ_enum.Waffe:
item = item as Waffe;
case typ_enum.Buch:
item = item as Buch;
default:
break;
}
}
|
How To Handle
Mein zweites Einsatzgebiet von Enums ist, um zu gucken wie ich mit einem Objekt umgehen muss. Wenn ich das Beispiel von oben nehme, muss ich eine Waffe anders behandeln als ein Buch. Zu diesem Zweck gucke ich nach dem Enum und entscheide dann, welchen Handler ich nehme.
Das sind meine zwei Einsatzgebiete für selbst erstellte Enums. Beides finde ich nicht sehr schick, doch bis jetzt hatte ich (offensichtlich) keinen besseren Einfall.
Ich hoffe ihr habt eine Idee, gerade weil das hinzufügen von neuen Werten bedeutet, das ich jedes einzelne Switch-Case anpassen muss.