/// <summary> /// Resolves all dependencies specified in the given `IComponentResolverConfiguration` instance. /// </summary> /// <param name="resolver">The `IComponentResolver` instance to resolve dependencies from.</param> /// <param name="resolverConfiguration">The `IComponentResolverConfiguration` instance that contains the registry configuration.</param> public static void ResolveConfiguration(IComponentResolver resolver, IComponentResolverConfiguration resolverConfiguration) { Guard.AgainstNull(resolver, nameof(resolver)); Guard.AgainstNull(resolverConfiguration, nameof(resolverConfiguration)); foreach (var component in resolverConfiguration.Components) { resolver.Resolve(component.DependencyType); } resolver.WireComponentResolverDelegate(); }
/// <summary> /// Creates an instance of all types implementing the `IComponentResolverBootstrap` interface and calls the `Resolve` /// method. /// </summary> /// <param name="resolver">The `IComponentResolver` instance to resolve dependencies from.</param> /// <param name="resolverConfiguration">The `IComponentResolverConfiguration` instance that contains the registry configuration.</param> /// <param name="bootstrapConfiguration">The `IBootstrapConfiguration` instance that contains the bootstrapping configuration.</param> public static void ResolverBoostrap(IComponentResolver resolver, IComponentResolverConfiguration resolverConfiguration, IBootstrapConfiguration bootstrapConfiguration) { Guard.AgainstNull(resolver, "resolver"); Guard.AgainstNull(resolverConfiguration, nameof(resolverConfiguration)); var reflectionService = new ReflectionService(); foreach (var assembly in bootstrapConfiguration.Assemblies) { foreach (var type in reflectionService.GetTypes <IComponentResolverBootstrap>(assembly)) { type.AssertDefaultConstructor(string.Format(InfrastructureResources.DefaultConstructorRequired, "IComponentResolverBootstrap", type.FullName)); ((IComponentResolverBootstrap)Activator.CreateInstance(type)).Resolve(resolver); } } foreach (var component in resolverConfiguration.Components) { resolver.Resolve(component.DependencyType); } }