/// <summary> /// Build instances from configurations by convention /// </summary> /// <returns></returns> internal virtual IServiceContainer Resolve(ConfigurationBootstrapper configurationBootstrapper = null, params Assembly[] scanAssemblies) { var config = configurationBootstrapper ?? new ConfigurationBootstrapper(); scanAssemblies = scanAssemblies ?? new Assembly[0]; _allTypes = scanAssemblies.SelectMany(assembly => assembly.LoadAllTypesFromAssembly().Where(type => type.FullName.StartsWith("Signals"))).ToList(); config.JsonSerializerSettings = () => JsonSerializerSettings; //config.RecurringTaskLogProvider = () => RecurringTaskLogProvider; config.DependencyResolver = () => RegistrationService; config.Logging = () => GetInstance <ILogger>(LoggerConfiguration); config.Auditing = () => GetInstance <IAuditProvider>(AuditingConfiguration); config.Cache = () => GetInstance <ICache>(CacheConfiguration); config.Storage = () => GetInstance <IStorageProvider>(StorageConfiguration); config.MessageChannel = () => GetInstance <IMessageChannel>(ChannelConfiguration); config.PermissionProvider = () => GetInstance <IPermissionProvider>(SecurityConfiguration); config.Benchmarker = () => GetInstance <IBenchmarker>(BenchmarkingConfiguration); config.AuthenticationManager = () => GetImplementationTypes <IAuthenticationManager>().SingleOrDefault(); config.AuthorizationManager = () => GetImplementationTypes <IAuthorizationManager>().SingleOrDefault(); config.TaskRegistry = () => TaskRegistry; config.ErrorHandling = () => StrategyBuilder; var localizaitonProvider = GetInstance <ILocalizationDataProvider>(LocalizationConfiguration); config.Localization = () => !localizaitonProvider.IsNull() ? new LocalizationProvider(localizaitonProvider) : null; if (SecurityConfiguration.IsNull()) { if (config.AuthenticationManager()?.IsNull() == false) { config.PermissionManager = () => GetImplementationTypes <IPermissionManager>() .SingleOrDefault(x => !x.IsAssignableFrom(typeof(Processing.Authorization.PermissionManager))); } } else { config.PermissionManager = () => typeof(Processing.Authorization.PermissionManager); } return(config.Bootstrap(scanAssemblies)); }
/// <summary> /// Internal resolver /// </summary> /// <param name="configurationBootstrapper"></param> /// <param name="scanAssemblies"></param> /// <returns></returns> IServiceContainer IApplicationBootstrapConfiguration.Resolve(ConfigurationBootstrapper configurationBootstrapper, params Assembly[] scanAssemblies) { return(Resolve(configurationBootstrapper, scanAssemblies)); }