/// <summary> /// </summary> /// <param name="configuration"></param> /// <param name="register"></param> /// <returns></returns> public static IIocAppConfiguration Register(this IIocAppConfiguration configuration, Action <IIocRegistrar> register) { Ensure.NotNull(configuration, nameof(configuration)); Ensure.NotNull(register, nameof(register)); register(configuration.Registrar); return(configuration); }
public static IIocAppConfiguration UseNLog(this IIocAppConfiguration configuration, string configFile = null) { if (!string.IsNullOrEmpty(configFile)) { LoggerFactory.SetXmlConfigFile(configFile); } configuration.Registrar.Register <ILoggerFactory, LoggerFactory>(LifetimeType.Singleton); return(configuration); }
public static IIocAppConfiguration AddHttpAuthentication(this IIocAppConfiguration configuration) { Ensure.NotNull(configuration, nameof(configuration)); var registrar = configuration.Registrar; registrar.Register <IHttpContextAccessor, HttpContextAccessor>(LifetimeType.Singleton); registrar.Register <IAuthenticationService, HttpAuthenticationService>(LifetimeType.Singleton); registrar.Register <IPrincipalAccessor, HttpPrincipalAccessor>(LifetimeType.Singleton); registrar.Register <IQimSession, ClaimsSession>(LifetimeType.Singleton); return(configuration); }
public static IIocAppConfiguration RunStartupTask(this IIocAppConfiguration configuration) { var tasks = configuration.Resolver.GetAllServices <IStartupTask>().OrderBy(a => a.Order); foreach (var task in tasks) { task.Execute(configuration); } return(configuration); }
public static IIocAppConfiguration Start(Func <IAppConfiguration, IIocAppConfiguration> configAction) { Ensure.NotNull(configAction, nameof(configAction)); if (_configuration != null) { return(_configuration); //确保只执行一次 } _configuration = configAction(AppConfiguration); _configuration.Registrar.RegisterInstance(Configuration); return(_configuration); }
public static IIocAppConfiguration LoadSettings(this IIocAppConfiguration configuration, string settingText) { Ensure.NotNull(configuration, nameof(configuration)); Ensure.NotNullOrWhiteSpace(settingText, nameof(settingText)); var appSettings = JsonConvert.DeserializeObject <AppSettings>(settingText, new Runtime.Serialization.StringTypeConverter()); if (appSettings == null) { throw new AppException($"Load app settings failed.The setting text is: {settingText}"); } return(LoadSettings(configuration, appSettings)); }
public static IIocAppConfiguration UserAutoMapper(this IIocAppConfiguration configuration) { Ensure.NotNull(configuration, nameof(configuration)); var registrar = configuration.Registrar; registrar.Register <IObjectMapper, AutoMapperObjectMapper>(LifetimeType.Singleton); var typeFinder = configuration.Resolver.GetService <ITypeFinder>(); CreateMapping(typeFinder); registrar.RegisterInstance(Mapper.Instance); return(configuration); }
public static IServiceProvider BuildServiceProvider(this IIocAppConfiguration configuration, IEnumerable <ServiceDescriptor> descriptors) { Ensure.NotNull(configuration, nameof(configuration)); var register = configuration.Registrar; register.Register <IServiceScopeFactory, ServiceScopeFactory>(); register.Register <IServiceProvider, ServiceProvider>(); register.Populate(descriptors); //register.Replace(typeof(IModelMetadataProvider), typeof(ExtendedModelMetadataProvider), lifetime: LifetimeType.Singleton); return(configuration.Resolver.GetService <IServiceProvider>()); }
private static IIocAppConfiguration Register( this IIocAppConfiguration configuration, IEnumerable <ServiceDescriptor> descriptors) { var manager = (IocManager)configuration.Registrar; foreach (var descriptor in descriptors) { var uniqueName = descriptor.ServiceType.FullName + "_" + Guid.NewGuid(); var lifetime = GetLifetimeType(descriptor.Lifetime); if (descriptor.ImplementationType != null) { manager.IocContainer.Register( Component.For(descriptor.ServiceType) //.Named(uniqueName) .NamedAutomatically(uniqueName) .IsDefault() .ImplementedBy(descriptor.ImplementationType) .ApplyLifestyle(lifetime)); } else if (descriptor.ImplementationFactory != null) { manager.IocContainer.Register(Component.For(descriptor.ServiceType).UsingFactoryMethod( (kernel, context) => descriptor.ImplementationFactory(kernel.Resolve <IServiceProvider>()) ).ApplyLifestyle(lifetime).IsDefault()); } else { manager.IocContainer.Register( Component.For(descriptor.ServiceType) .NamedAutomatically(uniqueName) .IsDefault() .Instance(descriptor.ImplementationInstance) .ApplyLifestyle(lifetime) ); } } return(configuration); }
public static IIocAppConfiguration LoadSettings(this IIocAppConfiguration configuration, AppSettings appSettings) { Ensure.NotNull(configuration, nameof(configuration)); Ensure.NotNull(appSettings, nameof(appSettings)); configuration.DefaultNameOrConnectionString = appSettings.ConnectionString; var taskInterface = typeof(IStartupTask); if (appSettings.StartupTasks != null) { foreach (var task in appSettings.StartupTasks) { var taskType = GetTypeFromString(task.Type); if (!taskInterface.IsAssignableFrom(taskType)) { throw new InvalidOperationException($"The type must be assigned from IStartupTask. "); } configuration.Registrar.RegisterType(taskInterface, taskType, task.Name); } } if (appSettings.Components != null) { foreach (var item in appSettings.Components) { var type = GetTypeFromString(item.Type); if (!string.IsNullOrWhiteSpace(item.ServiceType)) { var serviceType = GetTypeFromString(item.ServiceType); configuration.Registrar.RegisterType(serviceType, type, item.Name); } else { configuration.Registrar.RegisterType(type, item.Name); } } } return(configuration); }
public static IIocAppConfiguration UseEntityFrameworkCore(this IIocAppConfiguration configuration, Action <DbContextConfiguration> action, string connectionString = null) { Ensure.NotNull(configuration, nameof(configuration)); Ensure.NotNull(action, nameof(action)); if (string.IsNullOrEmpty(connectionString)) { connectionString = configuration.DefaultNameOrConnectionString; } DbContextConfigurer.Instance.Init(connectionString, action); configuration.Registrar.Register <IDbContextProvider, UnitOfWorkDbContextProvider>(); configuration.Registrar.Register <IDbContextResolver, DbContextResolver>(); configuration.Registrar.Register <IUnitOfWork, EfCoreUnitOfWork>(); configuration.Registrar.Register <IUnitOfWorkManager, UnitOfWorkManager>(); configuration.Registrar.Register <ICurrentUnitOfWorkProvider, CurrentUnitOfWorkProvider>(LifetimeType.Singleton); configuration.Registrar.Register <IConnectionStringResolver, ConnectionStringResolver>(); configuration.Registrar.Register <EfCoreDbContext, EfCoreDbContext>(); configuration.Registrar.RegisterType(typeof(IRepository <,>), typeof(EfCoreRepository <,>)); return(configuration); }
public static IIocAppConfiguration UseEmptyLogger(this IIocAppConfiguration configuration) { configuration.Registrar.Register <ILoggerFactory, EmptyLoggerFactory>(LifetimeType.Singleton); return(configuration); }
public void Execute(IIocAppConfiguration configuration) { configuration.Registrar.Register <IUserRepository, UserRepository>(); configuration.Registrar.Register <IGlobalAccountRepository, GlobalAccountRepository>(); }
public void Execute(IIocAppConfiguration configuration) { configuration.Registrar.Register <IUserManager, UserManager>(); configuration.Registrar.Register <IUserService, UserService>(); }