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

Castle.MicroKernel.ComponentActivator.DefaultComponentActivator

Standard implementation of IComponentActivator. Handles the selection of the best constructor, fills the writable properties the component exposes, run the commission and decommission lifecycles, etc.
namespace Castle.MicroKernel.ComponentActivator { public class DefaultComponentActivator : AbstractComponentActivator { public DefaultComponentActivator(ComponentModel model, IKernelInternal kernel, ComponentInstanceDelegate onCreation, ComponentInstanceDelegate onDestruction); protected virtual object Instantiate(CreationContext context); protected virtual object CreateInstance(CreationContext context, ConstructorCandidate constructor, object[] arguments); protected object CreateInstanceCore(ConstructorCandidate constructor, object[] arguments, Type implType); protected virtual ConstructorCandidate SelectEligibleConstructor(CreationContext context); protected virtual bool CanSatisfyDependency(CreationContext context, DependencyModel dependency); protected virtual object[] CreateConstructorArguments(ConstructorCandidate constructor, CreationContext context); protected virtual void SetUpProperties(object instance, CreationContext context); } }