Создание статических свойств меню

Я пытаюсь создать класс меню, где я могу добавить элементы меню в свой код, а затем вызвать подэлемент через статические свойства.

Моя идея:

var myMenu = new Menu();
myMenu.Add("Articles");
myMenu.Add("Customers");

// now call the item via...
_navigation.NavigateTo(Menu.Articles);

// or add further subitems
Menu.Customers.Add("International");

Может ли C# создавать такие свойства?


person Daniel-NP    schedule 23.01.2017    source источник
comment
Пока не могу комментировать вопросы, но попробуйте найти здесь stackoverflow.com/questions/6196022/ stackoverflow.com/questions/947241/   -  person yolo sora    schedule 23.01.2017


Ответы (1)


Вы можете создать статические свойства для этого. Вам нужно хранить экземпляры в статических свойствах. Они не могут быть созданы динамически. Если вы хотите получить к ним динамический доступ, вы должны создать что-то вроде Dictionary<string, MenuItem> для доступа к экземплярам по имени.

public class Program
{
    static void Main()
    {
        MyMenu = new Menu();
        Articles = myMenu.Add("Articles");
        MyMenu.Add("Customers");

    }

    public static Menu MyMenu {get; private set;}
    public static MenuItem Articles { get; private set;}
}

Вы можете выбрать, хотите ли вы получить доступ к Menu или MenuItem. Вы можете получить к ним доступ, используя Program.MyMenu или Program.Articles и т. д.

person Jeroen van Langen    schedule 23.01.2017
comment
Я думаю, что я пойду по пути с предопределенными статическими свойствами, как вы упомянули. Идея с ExpandoObject выглядела очень красиво, но когда мне нужно прочитать свойства Expando, я должен преобразовать свой объект меню в dynamic, так что intellisense это больше не нравится... - person Daniel-NP; 26.01.2017