/// <summary> /// Ctor /// </summary> /// <param name="cacheManager">Cache manager</param> /// <param name="coreCryptography">crytopraphy</param> /// <param name="settingProvider"></param> /// <param name="settingNotification"></param> public ApplicationSettingService(ICoreCryptography coreCryptography, ISettingProvider settingProvider, SettingNotification settingNotification) { _coreCryptography = coreCryptography; _settingProvider = settingProvider; _settingNotification = settingNotification; //SetAllSettingsToCache(); }
private void InitializeContainer(EventBroker broker, CoreConfiguration configuration) { var builder = new ContainerBuilder(); //other dependencies builder.RegisterInstance(configuration).Keyed("core.configuration", typeof(CoreConfiguration)).As <CoreConfiguration>().SingleInstance(); builder.RegisterInstance(this).Keyed <IEngine>("core.engine").As <IEngine>().SingleInstance(); //containerManager.AddComponentInstance<FirstContainerConfigurer>(this, "core.containerConfigurer"); builder.RegisterType <ConfigurationManagerWrapper>().Keyed <IConfigurationManager>("core.configurationManagerWrapper").As <IConfigurationManager>().SingleInstance(); builder.RegisterType <CoreCryptography>().Keyed <ICoreCryptography>("core.cryptography").As <ICoreCryptography>().SingleInstance(); var notificationInstance = new SettingNotification(); builder.RegisterInstance(notificationInstance).SingleInstance(); builder.RegisterInstance(new EventLog() { Source = "Application" }).SingleInstance(); builder.RegisterType <DefaultLogger>().Keyed <ILogger>(CoreConsts.DefaultLoggerKey).SingleInstance(); //type finder var typeFinderInstance = new WebAppTypeFinder(configuration); builder.RegisterInstance(typeFinderInstance).Keyed <ITypeFinder>("core.typeFinder").As <ITypeFinder>().SingleInstance(); //register dependencies provided by other assemblies var drTypes = typeFinderInstance.FindClassesOfType <INeedDependencyRegistrar>(); var drInstances = drTypes.Select(drType => (INeedDependencyRegistrar)Activator.CreateInstance(drType)).ToList(); //sort drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList(); foreach (var dependencyRegistrar in drInstances) { dependencyRegistrar.Register(builder, typeFinderInstance); } //event broker builder.RegisterInstance(broker).SingleInstance(); //Setting Subscribe if (notificationInstance != null) { foreach (var settingObserver in typeFinderInstance.FindClassesOfType <BaseSettingObserver>()) { var type = Activator.CreateInstance(settingObserver) as BaseSettingObserver; if (type != null) { notificationInstance.Subscribe(type); } } } _containerManager = new ContainerManager(builder.Build(), configuration); }