using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using WalkingTec.Mvvm.Core.Support.Json; namespace WalkingTec.Mvvm.Core { /// /// 应用全局缓存 /// public class GlobalData { /// /// 程序集 /// public List AllAssembly { get; set; } /// /// 可访问的url地址 /// public List AllAccessUrls { get; set; } public Type CustomUserType { get; set; } /// /// 模块 /// public List AllModule { get; set; } private Func> MenuGetFunc; public List AllMenus => MenuGetFunc?.Invoke(); /// /// 设置菜单委托 /// /// public void SetMenuGetFunc(Func> func) => MenuGetFunc = func; public List GetTypesAssignableFrom() { var rv = new List(); foreach (var ass in AllAssembly) { var types = new List(); try { types.AddRange(ass.GetExportedTypes()); } catch { } rv.AddRange(types.Where(x => typeof(T).IsAssignableFrom(x) && x != typeof(T) && x.IsAbstract == false).ToList()); } return rv; } } }