public async virtual void OpenPage(string pageName) { if (string.IsNullOrWhiteSpace(pageName)) { return; } var m = ModuleManager.Modules.FirstOrDefault(t => t.Name.Equals(pageName)); if (m == null) { return; } var module = ModuleList.FirstOrDefault(t => t.Name == m.Name); if (module == null) { var dialog = NetCoreProvider.Get <IBusinessModule>(m.TypeName); if (dialog != null) { await dialog.BindDefaultModel(m.Auth); ModuleList.Add(new ModuleUIComponent() { Code = m.Code, Auth = m.Auth, Name = m.Name, TypeName = m.TypeName, Body = dialog.GetView() }); } else { var dialogbase = NetCoreProvider.Get <IBaseModule>(m.TypeName); dialogbase.BindDefaultModel(); ModuleList.Add(new ModuleUIComponent() { Code = m.Code, Name = m.Name, TypeName = m.TypeName, Body = dialogbase.GetView() }); } //将数据库中获取的菜单Namespace在容器当中查找依赖关系的实例 CurrentModule = ModuleList[ModuleList.Count - 1]; GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect(); } else { CurrentModule = module; } }
protected override void OnParameterChanged(object sender, NotifyCollectionChangedEventArgs e) { if (base.Parameter.Any(a => a.Key == DataModelName)) { this.CurrentDataModel = (Role)(base.Parameter.FirstOrDefault(a => a.Key == DataModelName).Value as Role).Clone(); foreach (var v in dbContext.RoleModuleDb.GetList(a => a.RoleId == CurrentDataModel.Id)) { SelectedModuleList.Add(ModuleList.FirstOrDefault(a => a.Id == v.ModuleId)); } SelectedModuleList.CollectionChanged += SelectedModuleList_CollectionChanged; CurrentDataModel.PropertyChanged += CurrentDataModel_PropertyChanged; } }
public void ClosePage(string pageName) { var module = ModuleList.FirstOrDefault(t => t.Name.Equals(pageName)); if (module != null) { ModuleList.Remove(module); if (ModuleList.Count > 0) { CurrentModule = ModuleList[ModuleList.Count - 1]; } else { CurrentModule = null; } GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect(); } }
public T GetModule <T>() where T : Module { return(m_Modules.FirstOrDefault(n => n.Module is T)?.Module as T); }