コード例 #1
0
ファイル: TSEngine.cs プロジェクト: emrahshn/Provent
        protected virtual void RegisterDependencies(TSConfig config)
        {
            var builder = new ContainerBuilder();

            //bağımlılıklar
            var typeFinder = new WebAppTypeFinder();

            builder.RegisterInstance(config).As <TSConfig>().SingleInstance();
            builder.RegisterInstance(this).As <IEngine>().SingleInstance();
            builder.RegisterInstance(typeFinder).As <ITypeFinder>().SingleInstance();

            //Diğer assmblyler tarafından sağlanan bağımlılıkları kaydet
            var drTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            var drInstances = new List <IDependencyRegistrar>();

            foreach (var drType in drTypes)
            {
                drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType));
            }
            //sırala
            drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList();
            foreach (var dependencyRegistrar in drInstances)
            {
                dependencyRegistrar.Register(builder, typeFinder, config);
            }

            var container = builder.Build();

            GlobalHost.DependencyResolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(container);
            this._containerManager        = new ContainerManager(container);

            //bağımlılık çözücü ayarla
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
コード例 #2
0
ファイル: TSEngine.cs プロジェクト: emrahshn/Provent
        protected virtual void RegisterMapperConfiguration(TSConfig config)
        {
            //bağımlılıklar
            var typeFinder = new WebAppTypeFinder();

            //Diğer assmblyler tarafından sağlanan bağımlılıkları kaydet
            var mcTypes     = typeFinder.FindClassesOfType <IMapperAyarları>();
            var mcInstances = new List <IMapperAyarları>();

            foreach (var mcType in mcTypes)
            {
                mcInstances.Add((IMapperAyarları)Activator.CreateInstance(mcType));
            }
            //sırala
            mcInstances = mcInstances.AsQueryable().OrderBy(t => t.Order).ToList();
            //yapılandırmayı al
            var configurationActions = new List <Action <IMapperConfigurationExpression> >();

            foreach (var mc in mcInstances)
            {
                configurationActions.Add(mc.GetConfiguration());
            }
            //kaydet
            AutoMapperAyarları.Init(configurationActions);
        }
コード例 #3
0
        public IServiceProvider ConfigureServices(IServiceCollection services, IConfigurationRoot configuration)
        {
            var typeFinder            = new WebAppTypeFinder();
            var startupConfigurations = typeFinder.FindClassesOfType <IStartup>();

            var instances = startupConfigurations
                            .Where(startup => EklentiYönetici.EklentiBul(startup)?.Kuruldu ?? true) //ignore not installed plugins
                            .Select(startup => (IStartup)Activator.CreateInstance(startup))
                            .OrderBy(startup => startup.Order);

            //configure services
            foreach (var instance in instances)
            {
                instance.ConfigureServices(services, configuration);
            }

            AddAutoMapper(services, typeFinder);

            var nopConfig = services.BuildServiceProvider().GetService <Config>();

            RegisterDependencies(nopConfig, services, typeFinder);

            if (!nopConfig.IgnoreStartupTasks)
            {
                RunStartupTasks(typeFinder);
            }

            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            AppDomain.CurrentDomain.SetData("DataDirectory", GenelYardımcı.MapPath("~/App_Data/"));

            return(_serviceProvider);
        }