Exemplo n.º 1
0
         /// <inheritdoc/>
        public void Perform(NoSettings settings, IBootStageBuilder builder)
        {
            var typeFinder = builder.GetAssociation(WellKnownAssociations.TypeFinder) as ITypeFinder;
            var logger = builder.GetAssociation(WellKnownAssociations.Logger) as ILogger;
            
            var configurationObjectProviders = new ConfigurationObjectProviders(typeFinder, builder.Container, logger);
            builder.Bindings.Bind<IConfigurationObjectProviders>().To(configurationObjectProviders);

            var configurationObjectTypes = typeFinder.FindMultiple<IConfigurationObject>();
            configurationObjectTypes.ForEach((System.Action<System.Type>)(_ => 
            {
                logger.Trace((string)$"Bind configuration object '{_.GetFriendlyConfigurationName()} - {_.AssemblyQualifiedName}'");
                _.ShouldBeImmutable();
                builder.Bindings.Bind(_).To((System.Func<object>)(() => {
                    var instance = configurationObjectProviders.Provide(_);
                    logger.Trace((string)$"Providing configuration object '{_.GetFriendlyConfigurationName()} - {_.AssemblyQualifiedName}' - {instance.GetHashCode()}");
                    return instance;
                }));
            }));
        }
Exemplo n.º 2
0
        /// <inheritdoc/>
        public void Perform(NoSettings settings, IBootStageBuilder builder)
        {
            var typeFinder    = builder.GetAssociation(WellKnownAssociations.TypeFinder) as ITypeFinder;
            var loggerManager = builder.GetAssociation(WellKnownAssociations.LoggerManager) as ILoggerManager;
            var logger        = loggerManager.CreateLogger <Configuration>();

            var configurationObjectProviders = new ConfigurationObjectProviders(typeFinder, builder.Container, logger);

            builder.Bindings.Bind <IConfigurationObjectProviders>().To(configurationObjectProviders);

            var configurationObjectTypes = typeFinder.FindMultiple <IConfigurationObject>();

            configurationObjectTypes.ForEach(_ =>
            {
                logger.Trace("Bind configuration object '{configurationObjectName} - {configurationObjectType}'", _.GetFriendlyConfigurationName(), _.AssemblyQualifiedName);
                _.ShouldBeImmutable();
                builder.Bindings.Bind(_).To(() =>
                {
                    var instance = configurationObjectProviders.Provide(_);
                    logger.Trace("Providing configuration object '{configurationObjectName} - {configurationTypeName}' - {configurationObjectHash}", _.GetFriendlyConfigurationName(), _.AssemblyQualifiedName, instance.GetHashCode());
                    return(instance);
                });
            });
        }