<PackageReference Include="Castle.Windsor" Version="2.5.3" />

ArrayResolver

Handle dependencies of services in the format of typed arrays.
using Castle.Core; using Castle.MicroKernel.Context; using System; namespace Castle.MicroKernel.Resolvers.SpecializedResolvers { public class ArrayResolver : ISubDependencyResolver { private readonly bool allowEmptyArray; private readonly IKernel kernel; public ArrayResolver(IKernel kernel) : this(kernel, false) { } public ArrayResolver(IKernel kernel, bool allowEmptyArray) { this.kernel = kernel; this.allowEmptyArray = allowEmptyArray; } public bool CanResolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) { Type targetItemType = dependency.TargetItemType; if (targetItemType != (Type)null && targetItemType.IsArray) { if (!allowEmptyArray) return kernel.HasComponent(targetItemType.GetElementType()); return true; } return false; } public object Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) { return kernel.ResolveAll(dependency.TargetItemType.GetElementType(), null); } } }