示例#1
0
 /// <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();
 }
示例#2
0
        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);
        }