/// <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(); }
/// <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); }
/// <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); }
/// <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(); } }
/// <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); }
/// <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(); }
/// <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(); }
/// <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); }
/// <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(); }
/// <summary> /// 重写以实现重置OSharp配置信息 /// </summary> /// <param name="config">原始配置信息</param> /// <returns>重置后的配置信息</returns> protected virtual OSharpConfig ResetConfig(OSharpConfig config) { return(config); }