AccidentalFish.ApplicationSupport.Core.Bootstrapper.UseCore C# (CSharp) Method

UseCore() public static method

Register the dependencies in a container
public static UseCore ( this container, string correlationIdKey = "correlation-id", LogLevelEnum defaultTraceLoggerMinimumLogLevel = LogLevelEnum.Warning, IFullyQualifiedName defaultLoggerSource = null ) : IDependencyResolver
container this The container to use
correlationIdKey string The correlation ID key. Defaults to correlation-id
defaultTraceLoggerMinimumLogLevel LogLevelEnum
defaultLoggerSource IFullyQualifiedName The component source to use for a default logger when no source is specified - defaults to null.
return IDependencyResolver
        public static IDependencyResolver UseCore(
            this IDependencyResolver container,
            string correlationIdKey = "correlation-id",
            LogLevelEnum defaultTraceLoggerMinimumLogLevel = LogLevelEnum.Warning,
            IFullyQualifiedName defaultLoggerSource = null)
        {
            Func<ICorrelationIdProvider> createCorrelationIdProvider;
            if (!string.IsNullOrWhiteSpace(correlationIdKey))
            {
                createCorrelationIdProvider = () => new CallContextCorrelationIdProvider(correlationIdKey);
            }
            else
            {
                createCorrelationIdProvider = () => new NullCorrelationIdProvider();
            }
            return container
                .Register<IAsynchronousDelay, AsynchronousDelay>()
                .Register<ITimerThreadPoolExecuter, TimerThreadPoolExecuter>()
                .Register<ITimerFactory, TimerFactory>()
                .Register<IBackoffPolicy, BackoffPolicy>()
                .Register<IBackoffPolicyTimingProvider, BackoffPolicyDefaultTimingProvider>()
                .Register<IAsynchronousBackoffPolicy, AsynchronousBackoffPolicy>()
                .Register<IBackoffPolicyFactory, BackoffPolicyFactory>()
                .Register<ILeasedRetry, LeasedRetry>()
                .Register<IWaitHandle, ManualResetEventWaitHandle>()
                .Register<IApplicationResourceSettingNameProvider, ApplicationResourceSettingNameProvider>()
                .Register<IAsyncApplicationResourceSettingProvider, AsyncApplicationResourceSettingProvider>()
                .Register<IAsyncApplicationResourceFactory, AsyncApplicationResourceFactory>()
                .Register<IApplicationResourceFactory, ApplicationResourceFactory>()
                .Register<IApplicationResourceSettingProvider, ApplicationResourceSettingProvider>()
                .Register<IQueueFactory, NotSupportedQueueFactory>()
                .Register<ILeaseManagerFactory, NotSupportedLeaseManagerFactory>()
                .Register<IBlobRepositoryFactory, NotSupportedBlobRepositoryFactory>()
                .Register(createCorrelationIdProvider)
                .Register<ILoggerFactory>(() => new TraceLoggerFactory(defaultTraceLoggerMinimumLogLevel, defaultLoggerSource))
                .Register(() => new TraceLoggerFactory(defaultTraceLoggerMinimumLogLevel, defaultLoggerSource).CreateLogger())
                .Register(() => new TraceLoggerFactory(defaultTraceLoggerMinimumLogLevel, defaultLoggerSource).CreateAsynchronousLogger(defaultTraceLoggerMinimumLogLevel))
                .Register<IComponentHost, ComponentHost>()
                .Register<IEmailQueueDispatcher, EmailQueueDispatcher>()
                .Register<IUnitOfWorkFactoryProvider, NotSupportedUnitOfWorkFactoryProvider>()
                .Register<IRuntimeEnvironment, DefaultRuntimeEnvironment>()
                .Register<IConfiguration>(() => new DefaultConfiguration())
                .Register<IAsyncConfiguration>(() => new DefaultAsyncConfiguration())
                .Register<IComponentFactory>(() => new ComponentFactory(container))
                .Register<IComponentHostRestartHandler, DefaultComponentHostRestartHandler>()
                .Register<ILargeMessageQueueFactory, LargeMessageQueueFactory>()                
                // internal
                .Register<ICoreAssemblyLogger>(() =>
                    new CoreAssemblyLogger(container.Resolve<ILoggerFactory>().CreateLogger(new LoggerSource("AccidentalFish.ApplicationSupport.Core"))));
        }
    }
Bootstrapper