<PackageReference Include="Castle.Windsor" Version="5.1.0-beta001" />

AssemblyInstaller

using Castle.Core.Internal; using Castle.MicroKernel.Registration; using Castle.MicroKernel.SubSystems.Configuration; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace Castle.Windsor.Installer { public class AssemblyInstaller : IWindsorInstaller { private readonly Assembly assembly; private readonly InstallerFactory factory; public AssemblyInstaller(Assembly assembly, InstallerFactory factory) { if ((object)assembly == null) throw new ArgumentNullException("assembly"); if (factory == null) throw new ArgumentNullException("factory"); this.assembly = assembly; this.factory = factory; } public void Install(IWindsorContainer container, IConfigurationStore store) { IEnumerable<Type> enumerable = factory.Select(FilterInstallerTypes(assembly.GetAvailableTypes(false))); if (enumerable != null) { foreach (Type item in enumerable) { factory.CreateInstance(item).Install(container, store); } } } private IEnumerable<Type> FilterInstallerTypes(IEnumerable<Type> types) { return types.Where(delegate(Type t) { if (t.GetTypeInfo().get_IsClass() && !t.GetTypeInfo().get_IsAbstract() && !t.GetTypeInfo().get_IsGenericTypeDefinition()) return t.Is<IWindsorInstaller>(); return false; }); } } }