void IServerModuleStateContext.Initialize() { // Activate logging LoggerManagement.ActivateLogging(this); LoggerManagement.AppendListenerToStream(ProcessLogMessage, LogLevel.Warning, Name); Logger.Log(LogLevel.Info, "{0} is initializing...", Name); // Get config and parse for container settings Config = ConfigManager.GetConfiguration <TConf>(); ConfigParser.ParseStrategies(Config, Strategies); // Initialize container with server module dll and this dll Container = ContainerFactory.Create(Strategies, GetType().Assembly) .Register <IParallelOperations, ParallelOperations>() // Register instances for this cycle .SetInstance(Config).SetInstance(Logger); OnInitialize(); // Execute SubInitializer var subInits = Container.ResolveAll <ISubInitializer>() ?? new ISubInitializer[0]; foreach (var subInitializer in subInits) { subInitializer.Initialize(Container); } Logger.Log(LogLevel.Info, "{0} initialized!", Name); // After initializing the module, all notifications are unnecessary Notifications.Clear(); }
/// public virtual void Initialize(IModuleContainerFactory containerFactory, IModuleManager moduleManager, IConfigProvider configProvider) { RegionConfig = configProvider.GetConfiguration <ShellRegionConfig>(); // Initialize config if necessary if (!RegionConfig.Initialized) { BuildConfig(RegionConfig); RegionConfig.Initialized = true; configProvider.SaveConfiguration(RegionConfig); } // Load components from local assembly, inherited assembly and regions from directory ShellContainer = containerFactory.Create(new Dictionary <Type, string>(), GetType().Assembly); // Register region plugins in local container foreach (var module in moduleManager.EnabledModules.OfType <IRegionModule>()) { ShellContainer.SetInstance(module, module.Name); } LoadPlugins(ShellContainer); }