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

BuildApplicationObjectGraph() private method

private BuildApplicationObjectGraph ( ContainerBuilder builder ) : IContainer
builder Autofac.ContainerBuilder
return IContainer
        private IContainer BuildApplicationObjectGraph(ContainerBuilder builder, params Assembly[] assemblies)
        {
            // Build Application Object Graph
            var container = builder.Build();
            Logger = container.Resolve<ILogger>();

            // Ensure anything requiring property injection is assigned a value.
            foreach (Assembly assembly in assemblies)
            {
                var requiredPropertyInjections = DefaultIoCRegistrations.ProcessPropertyInjection(assembly);
                foreach (PropertyInjectionDependencyRequirement requirement in requiredPropertyInjections)
                {
                    // Some reasonably awkard Autofac usage here to allow testibility.  (Extension methods aren't easy to test)
                    IComponentRegistration registration;
                    bool success = container.ComponentRegistry.TryGetRegistration(new TypedService(requirement.DependencyRequired), out registration);
                    if (success)
                    {
                        object dependency = container.ResolveComponent(registration, Enumerable.Empty<Parameter>());
                        requirement.PropertyInjectionAssignment(dependency); 
                    }
                }
            }

            ConstructUiContext(container);
            
            return container;
        }