public DefaultModuleManager()
        {
            var dlls = GetAllPluginDlls(APPCommon.AppRootDir);

            foreach (var dll in dlls)
            {
                var ass      = Assembly.LoadFrom(dll);
                var alltypes = ass.GetTypes().Where(p => p.IsSubclassOf(typeof(ModuleBase)));
                foreach (var item in alltypes)
                {
                    RegistedModules.Add((IModule)Activator.CreateInstance(item));
                }
            }
            Guid = new Guid();
        }
        //public RequireItemCollection TotalRequireItems
        //{
        //    get
        //    {
        //        var cachemodel = APPCommon.RuntimeCache.GetOrCreate(Guid, entry =>
        //       {
        //           RequireItemCollection totalRequireItems = new RequireItemCollection();
        //           foreach (var m in RegistedModules)
        //           {
        //               foreach (var mc in m.RequireItems)
        //               {
        //                   if (totalRequireItems.FirstOrDefault(prop => prop.Name == mc.Name && prop.version == mc.version) != null)
        //                   {
        //                       totalRequireItems.Add(mc);
        //                   }

        //               }
        //           }
        //           APPCommon.RuntimeCache.Set(Guid, totalRequireItems);
        //           return totalRequireItems;
        //       });

        //        return cachemodel;
        //    }
        //}

        public IModule GetModule(ModuleName?name = null, string othername = null)
        {
            if (name == null)
            {
                return(RegistedModules.FirstOrDefault(p => p.ModuleName == othername));
            }
            else
            {
                if (name != ModuleName.Other)
                {
                    return(RegistedModules.FirstOrDefault(p => p.ModuleName == name.ToString()));
                }
                else
                {
                    return(RegistedModules.FirstOrDefault(p => p.ModuleName == othername));
                }
            }
            //loger
        }
 public IModule AddModule(IModule module)
 {
     RegistedModules.Add(module);
     return(module);
 }