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

FromAssembly

public class FromAssembly
using Castle.Core.Internal; using Castle.MicroKernel.Registration; using System; using System.Collections.Generic; using System.Reflection; using System.Runtime.CompilerServices; namespace Castle.Windsor.Installer { public class FromAssembly { public static IWindsorInstaller Containing(Type type) { if (type == (Type)null) throw new ArgumentNullException("type"); return Instance(type.GetTypeInfo().Assembly); } public static IWindsorInstaller Containing(Type type, InstallerFactory installerFactory) { if (type == (Type)null) throw new ArgumentNullException("type"); return Instance(type.GetTypeInfo().Assembly, installerFactory); } public static IWindsorInstaller Containing<T>() { return Containing(typeof(T)); } public static IWindsorInstaller Containing<T>(InstallerFactory installerFactory) { return Containing(typeof(T), installerFactory); } public static IWindsorInstaller InDirectory(AssemblyFilter filter) { return InDirectory(filter, new InstallerFactory()); } public static IWindsorInstaller InDirectory(AssemblyFilter filter, InstallerFactory installerFactory) { HashSet<Assembly> hashSet = new HashSet<Assembly>(ReflectionUtil.GetAssemblies(filter)); CompositeInstaller compositeInstaller = new CompositeInstaller(); foreach (Assembly item in hashSet) { compositeInstaller.Add(Instance(item, installerFactory)); } return compositeInstaller; } [MethodImpl(MethodImplOptions.NoInlining)] public static IWindsorInstaller InThisApplication() { return InThisApplication(Assembly.GetCallingAssembly()); } public static IWindsorInstaller InThisApplication(Assembly rootAssembly) { return ApplicationAssemblies(rootAssembly, new InstallerFactory()); } [MethodImpl(MethodImplOptions.NoInlining)] public static IWindsorInstaller InThisApplication(InstallerFactory installerFactory) { return ApplicationAssemblies(Assembly.GetCallingAssembly(), installerFactory); } public static IWindsorInstaller InThisApplication(Assembly rootAssembly, InstallerFactory installerFactory) { return ApplicationAssemblies(rootAssembly, installerFactory); } public static IWindsorInstaller Instance(Assembly assembly) { return Instance(assembly, new InstallerFactory()); } public static IWindsorInstaller Instance(Assembly assembly, InstallerFactory installerFactory) { return new AssemblyInstaller(assembly, installerFactory); } public static IWindsorInstaller Named(string assemblyName) { return Instance(ReflectionUtil.GetAssemblyNamed(assemblyName)); } public static IWindsorInstaller Named(string assemblyName, InstallerFactory installerFactory) { return Instance(ReflectionUtil.GetAssemblyNamed(assemblyName), installerFactory); } [MethodImpl(MethodImplOptions.NoInlining)] public static IWindsorInstaller This() { return Instance(Assembly.GetCallingAssembly()); } [MethodImpl(MethodImplOptions.NoInlining)] public static IWindsorInstaller This(InstallerFactory installerFactory) { return Instance(Assembly.GetCallingAssembly(), installerFactory); } private static IWindsorInstaller ApplicationAssemblies(Assembly rootAssembly, InstallerFactory installerFactory) { HashSet<Assembly> hashSet = new HashSet<Assembly>(ReflectionUtil.GetApplicationAssemblies(rootAssembly)); CompositeInstaller compositeInstaller = new CompositeInstaller(); foreach (Assembly item in hashSet) { compositeInstaller.Add(Instance(item, installerFactory)); } return compositeInstaller; } } }