[C#] Statyczna lista klas...

1

Mam klasę "Menu" zawierającą listę właściwości wszystkich przycisków jakiegoś menu, i klasę "MenuItem" będącą reprezentantem takiego właśnie przycisku.

Utworzyłem już statyczne 'MenuItem'y, (public static MenuItem EndProgramItem = ...), teraz chciałbym też utworzyć statyczne, zdefiniowane menu. Odwoływało by się do niego mniej - więcej tak:

Menu mojeMenu = Menu.StatyczneMenu

'Menu' przechowuje wszystkie 'MenuItemy' w liście.

Wpadłem na razie na coś takiego:

        private static List<MenuItem> MainMenuItems = new List<MenuItem>();
        public static Menu MainMenu = new Menu(MainMenuItems);

Dla tablicy uzupełniłbym to tak:

private static List<MenuItem> MainMenuItems = {MenuItem.Item1, MenuItem.Item2, MenuItem.Item3}

Ale lista "nie chce" przyjąć czegoś takiego.

Więc moje pytanie: jak to osiągnąć? czy może za bardzo kombinuje i da się to osiągnąć znacznie prościej? Z góry dziękuje za pomoc, mam nadzieje że ktokolwiek zrozumie o co mi chodzi ;)

0

{MenuItem.Item1, MenuItem.Item2, MenuItem.Item3} jest konstruktorem tablic, a nie list, co znaczy, że możesz co najwyżej zrobić

private static MenuItem[] MainMenuItems = {MenuItem.Item1, MenuItem.Item2, MenuItem.Item3}

Ewentualnie cos takiego zadziała:

private static List<MenuItem> MainMenuItems = new List<MenuItem>();
MainMenuItems.AddRange(new MenuItem[]{MenuItem.Item1, MenuItem.Item2, MenuItem.Item3});
1

Ewentualnie cos takiego zadziała:

Nie zadziała, bo MainMenuItems jest statyczna.

A co do 1 porady -> lista bardzo mi odpowiada i nie chcę zmieniać jej na tablicę.

Jeśli to kogoś interesuje, w końcu poradziłem sobie tak:

private static MenuItem[] MainMenuItems = {MenuItem.NewGameItem, MenuItem.EmptyItem, MenuItem.EndGameItem};
        public static Menu MainMenu = new Menu(new List<MenuItem>(MainMenuItems));

Zastanawiałem się też nad zmianą wartości przyjmowanej przez konstruktor 'Menu' na tablicę, ale nie zdecydowałem się (po co komplikować).

0

private static List<MenuItem> MainMenuItems = {MenuItem.Item1, MenuItem.Item2, MenuItem.Item3}

Ale lista "nie chce" przyjąć czegoś takiego.

Ejj - moge się mylić.. ale czemu nie zastosowałeś takiego zapisu:

private static List<MenuItem> MainMenuItems = new List<MenuItem>() {MenuItem.Item1, MenuItem.Item2, MenuItem.Item3};

1 użytkowników online, w tym zalogowanych: 0, gości: 1