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