Exemplo n.º 1
0
        /// <summary>
        /// 执行初始化
        /// </summary>
        public void Initialize()
        {
            if (MvcIocInitializer == null)
            {
                throw new InvalidCastException("MVC初始化器不能为空,请为FrameworkInitializer.MvcIocInitializer属性赋值");
            }
            OSharpConfig config = OSharpConfig.Instance;

            BasicLoggingInitializer.Initialize(config.LoggingConfig);

            DatabaseInitializer.Initialize(config.DataConfig);

            if (MvcIocInitializer != null)
            {
                MvcIocInitializer.Initialize(config);
            }
            if (WebApiIocInitializer != null)
            {
                WebApiIocInitializer.Initialize(config);
            }
            if (SignalRIocInitializer != null)
            {
                SignalRIocInitializer.Initialize(config);
            }
            //DataLoggingInitializer.Initialize(config.LoggingConfig.DataLoggingConfig);
            DataHandlerInitializer.Initialize();
        }
Exemplo n.º 2
0
        /// <summary>
        /// 初始化依赖注入
        /// </summary>
        /// <param name="config">框架配置信息</param>
        public void Initialize(OSharpConfig config)
        {
            //注册数据上下文
            Type[] dbContexTypes = config.DataConfig.ContextConfigs.Where(m => m.Enabled).Select(m => m.ContextType).ToArray();
            RegisterDbContextTypes(dbContexTypes, typeof(IUnitOfWork));

            //注册数据仓储
            Type repositoryType = GetRepositoryType();

            if (!typeof(IRepository <,>).IsGenericAssignableFrom(repositoryType))
            {
                throw new InvalidOperationException(Resources.IocInitializerBase_TypeNotIRepositoryType.FormatWith(repositoryType.FullName));
            }
            RegisterRepositoryType(repositoryType, typeof(IRepository <,>));

            //注册即时生命周期的映射
            Type[] dependencyTypes = TransientTypeFinder.FindAll();
            RegisterDependencyTypes <ITransientDependency>(dependencyTypes);

            //注册局部生命周期的映射
            dependencyTypes = LifetimeScopeTypeFinder.FindAll();
            RegisterDependencyTypes <ILifetimeScopeDependency>(dependencyTypes);

            //注册单例生命周期的映射
            dependencyTypes = SingletonTypeFinder.FindAll();
            RegisterDependencyTypes <ISingletonDependency>(dependencyTypes);

            //注册自定义映射
            RegisterCustomTypes();

            //设置各个框架的DependencyResolver
            Assembly[] assemblies = AssemblyFinder.FindAll();
            SetResolver(assemblies);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 重写以实现重置OSharp配置信息
 /// </summary>
 /// <param name="config">原始配置信息</param>
 /// <returns>重置后的配置信息</returns>
 protected OSharpConfig ResetConfig(OSharpConfig config)
 {
     if (_options.DataConfigReseter != null)
     {
         config.DataConfig = _options.DataConfigReseter.Reset(config.DataConfig);
     }
     return(config);
 }
Exemplo n.º 4
0
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");

            OSharpConfig config = OSharpConfig.Instance;

            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build();

            //对象映射功能初始化
            IMappersBuilder mappersBuilder = provider.GetService <IMappersBuilder>();
            IMapper         mapper         = provider.GetService <IMapper>();

            if (!_mapperInitialized && mapper != null)
            {
                if (mappersBuilder != null)
                {
                    IEnumerable <IMapTuple> mapTuples = provider.GetServices <IMapTuple>();
                    mappersBuilder.Build(mapTuples);
                }
                MapperExtensions.SetMaper(mapper);
                _mapperInitialized = true;
            }

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService <IBasicLoggingInitializer>();

            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化
            IDatabaseInitializer databaseInitializer = provider.GetService <IDatabaseInitializer>();

            if (!_databaseInitialized && databaseInitializer != null)
            {
                databaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            //实体信息初始化
            IEntityInfoHandler entityInfoHandler = provider.GetService <IEntityInfoHandler>();

            if (!_entityInfoInitialized && entityInfoHandler != null)
            {
                entityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }
            //功能信息初始化
            IFunctionHandler functionHandler = provider.GetService <IFunctionHandler>();

            if (functionHandler != null)
            {
                functionHandler.Initialize();
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// 是否启用日志输出级别
 /// </summary>
 /// <param name="level">日志输出</param>
 /// <returns>日志输出级别</returns>
 private static bool IsLevelEnabled(LogLevel level)
 {
     if (_outLogLevel == null)
     {
         OSharpConfig config = OSharpConfig.Instance;
         _outLogLevel = config.LoggingConfig.DataLoggingConfig.OutLevel;
     }
     return(level >= _outLogLevel);
 }
Exemplo n.º 6
0
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="services">服务映射集合</param>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IServiceCollection services, IIocBuilder iocBuilder)
        {
            services.CheckNotNull("services");
            iocBuilder.CheckNotNull("iocBuilder");

            OSharpConfig config = OSharpConfig.Instance;

            //使用副本进行初始化,防止不同平台间的相互污染
            IServiceCollection newServices = services.Clone();
            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build(newServices);

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService <IBasicLoggingInitializer>();

            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化
            IDatabaseInitializer databaseInitializer = provider.GetService <IDatabaseInitializer>();

            if (!_databaseInitialized)
            {
                if (databaseInitializer == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializerBase_DatabaseInitializeIsNull);
                }
                databaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            //实体信息初始化
            if (!_entityInfoInitialized)
            {
                IEntityInfoHandler entityInfoHandler = provider.GetService <IEntityInfoHandler>();
                if (entityInfoHandler == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializerBase_EntityInfoHandlerIsNull);
                }
                entityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }
            //功能信息初始化
            IFunctionHandler functionHandler = provider.GetService <IFunctionHandler>();

            if (functionHandler == null)
            {
                throw new InvalidOperationException(Resources.FrameworkInitializerBase_FunctionHandlerIsNull);
            }
            functionHandler.Initialize();
        }
Exemplo n.º 7
0
        /// <summary>
        /// 开始初始化
        /// </summary>
        public void Initialize()
        {
            OSharpConfig config = ResetConfig(OSharpConfig.Instance);

            if (!_basicLoggingInitialized && _options.BasicLoggingInitializer != null)
            {
                _options.BasicLoggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            if (_options.IocInitializer == null)
            {
                throw new InvalidOperationException(Resources.FrameworkInitializerBase_IocInitializeIsNull);
            }
            _options.IocInitializer.Initialize(config);

            if (!_databaseInitialized)
            {
                if (_options.DatabaseInitializer == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializerBase_DatabaseInitializeIsNull);
                }
                _options.DatabaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            if (!_entityInfoInitialized)
            {
                if (_options.EntityInfoHandler == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializerBase_EntityInfoHandlerIsNull);
                }
                _options.EntityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }

            if (_options.FunctionHandler == null)
            {
                throw new InvalidOperationException(Resources.FrameworkInitializerBase_FunctionHandlerIsNull);
            }
            _options.FunctionHandler.Initialize();
        }
Exemplo n.º 8
0
        /// <summary>
        /// 初始化依赖注入
        /// </summary>
        /// <param name="config">框架配置信息</param>
        public void Initialize(OSharpConfig config)
        {
            Type[] dbContexTypes = config.DataConfig.ContextConfigs.Where(m => m.Enabled).Select(m => m.ContextType).ToArray();
            RegisterDbContextTypes(dbContexTypes, typeof(IUnitOfWork));

            RegisterRepositoryType(typeof(Repository <,>), typeof(IRepository <,>));

            Type[] dependencyTypes = TransientTypeFinder.FindAll();
            RegisterDependencyTypes <ITransientDependency>(dependencyTypes);

            dependencyTypes = LifetimeScopeTypeFinder.FindAll();
            RegisterDependencyTypes <ILifetimeScopeDependency>(dependencyTypes);

            dependencyTypes = SingletonTypeFinder.FindAll();
            RegisterDependencyTypes <ISingletonDependency>(dependencyTypes);

            RegisterCustomTypes();

            Assembly[] assemblies = AssemblyFinder.FindAll();
            SetResolver(assemblies);
        }
Exemplo n.º 9
0
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");

            OSharpConfig config = OSharpConfig.Instance;

            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build();

            //对象映射功能初始化
            IMappersBuilder mappersBuilder = provider.GetService <IMappersBuilder>();
            IMapper         mapper         = provider.GetService <IMapper>();

            if (!_mapperInitialized)
            {
                if (mappersBuilder != null)
                {
                    IEnumerable <IMapTuple> mapTuples = provider.GetServices <IMapTuple>();
                    mappersBuilder.Build(mapTuples);
                }
                if (mapper != null)
                {
                    MapperExtensions.SetMaper(mapper);
                }
                _mapperInitialized = true;
            }

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService <IBasicLoggingInitializer>();

            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化
            IDatabaseInitializer databaseInitializer = provider.GetService <IDatabaseInitializer>();

            if (!_databaseInitialized)
            {
                if (databaseInitializer == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializer_DatabaseInitializeIsNull);
                }
                databaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            //实体信息初始化
            if (!_entityInfoInitialized)
            {
                IEntityInfoHandler entityInfoHandler = provider.GetService <IEntityInfoHandler>();
                if (entityInfoHandler == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializer_EntityInfoHandlerIsNull);
                }
                entityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }
            //功能信息初始化
            IFunctionHandler functionHandler = provider.GetService <IFunctionHandler>();

            if (functionHandler == null)
            {
                throw new InvalidOperationException(Resources.FrameworkInitializer_FunctionHandlerIsNull);
            }
            functionHandler.Initialize();
        }
Exemplo n.º 10
0
 /// <summary>
 /// 重写以实现重置OSharp配置信息
 /// </summary>
 /// <param name="config">原始配置信息</param>
 /// <returns>重置后的配置信息</returns>
 protected virtual OSharpConfig ResetConfig(OSharpConfig config)
 {
     return(config);
 }