using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace MECF.Framework.Common.Account.Extends { public class MenuLoader : XmlLoader { #region Variables private List _menuList = new(); #endregion #region Constructors public MenuLoader(string fileName) : base(fileName) { } #endregion #region Methods /// /// 系统中配置的菜单项目。 /// public List MenuList => _menuList; /// protected override void AnalyzeXml() { if (XmlDoc != null) { _menuList = TranslateMenus(XmlDoc.Root); } } private static List TranslateMenus(XContainer pElement) { var list = new List(); var enumerable = from r in pElement.Elements("menuItem") select (r); foreach (var item in enumerable) { var menuId = ""; var menuViewModel = ""; var resKey = ""; var desc = ""; if (!item.HasElements) { menuId = item.Attribute("id").Value; menuViewModel = item.Attribute("viewmodel").Value; resKey = item.Attribute("resKey").Value; if (item.Attribute("Description") != null) desc = item.Attribute("Description").Value; var appMenu = new AppMenu(menuId, menuViewModel, resKey, null, desc); if (item.Attribute("System") != null) appMenu.System = item.Attribute("System").Value; if (item.Attribute("AlarmModule") != null) appMenu.AlarmModule = item.Attribute("AlarmModule").Value; list.Add(appMenu); continue; } menuId = item.Attribute("id").Value; resKey = item.Attribute("resKey").Value; var subMenus = new List(); subMenus = TranslateMenus(item); var appMenu2 = new AppMenu(menuId, menuViewModel, resKey, subMenus, desc); if (item.Attribute("System") != null) appMenu2.System = item.Attribute("System").Value; if (item.Attribute("AlarmModule") != null) appMenu2.AlarmModule = item.Attribute("AlarmModule").Value; list.Add(appMenu2); } return list; } #endregion } }