Sic.Framework/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/MenuLoader.cs

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
}
}