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();
            }
        }
示例#4
0
 public T GetModule <T>() where T : Module
 {
     return(m_Modules.FirstOrDefault(n => n.Module is T)?.Module as T);
 }