我有这些课程:
MenuComponent
MenuContainer
可以将MenuContainer视为菜单。菜单有很多元素。但是菜单可以包含在另一个菜单中。
我想坚持这一点,但我没有得到最好的方式:
namespace menu_builder_rbac {
public abstract class MenuComponent {
[Key]
public int MenuComponentId { get; set; }
public string DisplayName { get; set; }
public string Name { get; set; }
public string HtmlId { get; set; }
public string HtmlCssClass { get; set; }
public string Url { get; set; }
public string IconUrl { get; set; }
public bool Equals(MenuComponent menuComponent) {
return (this.MenuComponentId == menuComponent.MenuComponentId) || (this.Name == menuComponent.Name);
}
}
public class MenuContainer : MenuComponent {
public ICollection<MenuComponent> MenuComponentMenuContainer { get; set; }
}
}
答案 0 :(得分:0)
菜单实际上是树木。您的MenuComponent
将是节点的等效项。每个节点可以有其他MenuComponent
作为子节点。除非您想将其用作根MenuContainer
的顶级存储空间,否则我不会真正看到MenuComponent
的必要性。
所以你的课程看起来像:
public class MenuContainer
{
public ICollection<MenuComponent> Menus { get; }
}
public class MenuComponent
{
....
public ICollection<MenuComponent> ChildMenus { get; }
}