コード例 #1
0
ファイル: NopEngine.cs プロジェクト: Mrmanshow/ExploreTest
        /// <summary>
        /// 注册映射
        /// </summary>
        /// <param name="config">Config</param>
        protected virtual void RegisterMapperConfiguration(NopConfig config)
        {
            //依赖
            var typeFinder = new WebAppTypeFinder();

            //由其他程序集提供的映射器配置
            var mcTypes     = typeFinder.FindClassesOfType <IMapperConfiguration>();
            var mcInstances = new List <IMapperConfiguration>();

            foreach (var mcType in mcTypes)
            {
                mcInstances.Add((IMapperConfiguration)Activator.CreateInstance(mcType));
            }
            //排序
            mcInstances = mcInstances.AsQueryable().OrderBy(t => t.Order).ToList();
            //获取配置
            var configurationActions = new List <Action <IMapperConfigurationExpression> >();

            foreach (var mc in mcInstances)
            {
                configurationActions.Add(mc.GetConfiguration());
            }
            //注册
            AutoMapperConfiguration.Init(configurationActions);
        }
コード例 #2
0
ファイル: NopEngine.cs プロジェクト: Mrmanshow/ExploreTest
        /// <summary>
        /// Run startup tasks
        /// </summary>
        //protected virtual void RunStartupTasks()
        //{
        //    var typeFinder = _containerManager.Resolve<ITypeFinder>();
        //    var startUpTaskTypes = typeFinder.FindClassesOfType<IStartupTask>();
        //    var startUpTasks = new List<IStartupTask>();
        //    foreach (var startUpTaskType in startUpTaskTypes)
        //        startUpTasks.Add((IStartupTask)Activator.CreateInstance(startUpTaskType));
        //    //sort
        //    startUpTasks = startUpTasks.AsQueryable().OrderBy(st => st.Order).ToList();
        //    foreach (var startUpTask in startUpTasks)
        //        startUpTask.Execute();
        //}

        /// <summary>
        /// 注册依赖
        /// </summary>
        /// <param name="config">Config</param>
        protected virtual void RegisterDependencies(NopConfig config)
        {
            var builder = new ContainerBuilder();

            //依赖
            var typeFinder = new WebAppTypeFinder();

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

            //注册其他程序集提供的依赖
            var drTypes = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            //根据类型实例化
            var drInstances = new List <IDependencyRegistrar>();

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

            var container = builder.Build();

            this._containerManager = new ContainerManager(container);

            //设置依赖解析
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }