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

ListResolver

Handle dependencies of services in the format of generic IList.
using Castle.Core; using Castle.Core.Internal; using Castle.MicroKernel.Context; using System; using System.Collections.Generic; namespace Castle.MicroKernel.Resolvers.SpecializedResolvers { public class ListResolver : CollectionResolver { public ListResolver(IKernel kernel) : base(kernel, false) { } public ListResolver(IKernel kernel, bool allowEmptyList) : base(kernel, allowEmptyList) { } public override object Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) { object obj = base.Resolve(context, contextHandlerResolver, model, dependency); Type subtypeofTBase = BuildListType(dependency); return subtypeofTBase.CreateInstance<object>(new object[1] { obj }); } protected override Type GetItemType(Type targetItemType) { if (!targetItemType.IsGenericType || targetItemType.GetGenericTypeDefinition() != typeof(IList<>)) return null; return targetItemType.GetGenericArguments()[0]; } private Type BuildListType(DependencyModel dependency) { return typeof(List<>).MakeGenericType(GetItemType(dependency.TargetItemType)); } } }