Danke fuer das Brainstorming.
@Lists<> vs. Enums: Enums haben den eindeutigen Vorteil, dass Du die einzelnen Elemente deutlich netter ansprechen kannst und Du genau weisst, welche erlaubt sind, und welche nicht.
@Warum ich mir darueber den Kopf zerbreche: Teilweise sicher aus sportlich-akademischen Ehrgeiz. Ich moechte einfach wissen, ob es eine Moeglichkeit gibt eine (volle) Enum (nicht einzelne Elemente) als ("private") Parameter weiter zu reichen und als (public) Property in einer anderen Klasse zur Verfuegung zu stellen.
Die Loesung mit Lists<> klaert das Problem fuer mich nicht wirklich. Da wuerde ich schon eher bei meiner derzeitigen Loesung bleiben, und die Enum direkt durch die Klasse die das SubMenu object definiert (und die Enum definiert) accessible machen. Das hat fuer mich den Schoenheitsfehler, dass ich dann so auf die Properties zugreifen muss:
class MenuWraper
{
*snip*
public enum MenuOptions
{
option1,
option2,
option3
}
SubMenu<MenuOptions> myMenu = new SubMenu<MenuOptions>(MenuOptions.option2);
*snip*
}
MenuWrapper wrapper = new MenuWrapper();
wrapper.SubMenu ...
if (currentOption == wrapper.MenuOptions.option1) ...
Alles anzeigen
Anstatt des eleganteren Zugriffs ueber:
MenuWrapper wrapper = new MenuWrapper();
wrapper.SubMenu ...
if (currentOption == wrapper.SubMenu.Options.option1) ...
PS: Enums koennen uebrigens auch "dynamisch" = basierend auf Datenbankwerten sein, siehe hier.