85 lines
2.0 KiB
C#
85 lines
2.0 KiB
C#
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<AppMenu> _menuList = new();
|
|
|
|
#endregion
|
|
|
|
#region Constructors
|
|
|
|
public MenuLoader(string fileName)
|
|
: base(fileName)
|
|
{
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
/// <summary>
|
|
/// 系统中配置的菜单项目。
|
|
/// </summary>
|
|
public List<AppMenu> MenuList => _menuList;
|
|
|
|
/// <inheritdoc />
|
|
protected override void AnalyzeXml()
|
|
{
|
|
if (XmlDoc != null)
|
|
{
|
|
_menuList = TranslateMenus(XmlDoc.Root);
|
|
}
|
|
}
|
|
|
|
private static List<AppMenu> TranslateMenus(XContainer pElement)
|
|
{
|
|
var list = new List<AppMenu>();
|
|
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<AppMenu>();
|
|
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
|
|
}
|
|
}
|