/// public override void Initialize() { base.Initialize(); LoadUserInfos(); // Load modules GlobalContainer.LoadComponents <IClientModule>(TypeLoadFilter); GlobalContainer.LoadComponents <IModuleShell>(TypeLoadFilter); // Get types var moduleTypes = GlobalContainer.GetRegisteredImplementations(typeof(IClientModule)); var shellTypes = GlobalContainer.GetRegisteredImplementations(typeof(IModuleShell)).ToArray(); // Get assemblies Assemblies.AddRange(moduleTypes.Union(shellTypes).Distinct().Select(t => t.Assembly).Distinct().ToList()); // Raise load event for AssemblyConfiguration RaiseAssemblyConfigurationLoaded(new AssemblyConfiguration { Assemblies = Assemblies.Select(m => new AssemblyConfig(Path.GetFileName(m.Location))).ToList() }); // Raise AssemblyLoaded event for earch assembly foreach (var module in Assemblies) { RaiseAssemblyLoaded(new AssemblyConfig(Path.GetFileName(module.Location))); } RaiseAssembliesLoaded(Assemblies); }
/// <summary> /// Create the container and load all relevant directories /// </summary> /// <returns></returns> private IContainer CreateContainer() { var container = new GlobalContainer(); // Register local components container.ExecuteInstaller(new AutoInstaller(GetType().Assembly)); // Load additional run modes container.LoadComponents <IRunMode>(); // Load kernel and core modules container.LoadComponents <object>(type => type.GetCustomAttribute <KernelComponentAttribute>() != null); container.LoadComponents <IServerModule>(module => module.GetCustomAttribute <ServerModuleAttribute>() != null); // Load server modules container.LoadComponents <IServerModule>(); return(container); }