BudgetAnalyser.Uwp.CompositionRoot.ComposeTypesWithDefaultImplementations C# (CSharp) Method

ComposeTypesWithDefaultImplementations() private static method

private static ComposeTypesWithDefaultImplementations ( Assembly assembly, ContainerBuilder builder ) : void
assembly System.Reflection.Assembly
builder Autofac.ContainerBuilder
return void
        private static void ComposeTypesWithDefaultImplementations(Assembly assembly, ContainerBuilder builder)
        {
            var dependencies = DefaultIoCRegistrations.RegisterAutoMappingsFromAssembly(assembly);
            foreach (var dependency in dependencies)
            {
                IRegistrationBuilder<object, ConcreteReflectionActivatorData, SingleRegistrationStyle> registration;
                if (dependency.IsSingleInstance)
                {
                    // Singleton
                    registration = builder.RegisterType(dependency.DependencyRequired).SingleInstance();
                }
                else
                {
                    // Transient
                    registration = builder.RegisterType(dependency.DependencyRequired).InstancePerDependency();
                }

                if (!string.IsNullOrWhiteSpace(dependency.NamedInstanceName))
                {
                    // Named Dependency
                    registration = registration.Named(dependency.NamedInstanceName, dependency.DependencyRequired);
                }

                registration.AsImplementedInterfaces().AsSelf();

                // Register as custom type, other than its own class name, and directly implemented interfaces.
                if (dependency.AdditionalRegistrationType != null)
                {
                    registration.As(dependency.AdditionalRegistrationType);
                }
            }
        }
    }