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

DynamicParametersDescriptor

using Castle.Core; using Castle.MicroKernel.Context; using Castle.MicroKernel.Handlers; using Castle.MicroKernel.Registration; namespace Castle.MicroKernel.ModelBuilder.Descriptors { public class DynamicParametersDescriptor : IComponentModelDescriptor { private static readonly string key = "component_resolving_handler"; private readonly DynamicParametersWithContextResolveDelegate resolve; public DynamicParametersDescriptor(DynamicParametersWithContextResolveDelegate resolve) { this.resolve = resolve; } public void BuildComponentModel(IKernel kernel, ComponentModel model) { ComponentLifecycleExtension dynamicParametersExtension = GetDynamicParametersExtension(model); dynamicParametersExtension.AddHandler((IKernel k, CreationContext c) => resolve(k, c, c.AdditionalArguments)); } public void ConfigureComponentModel(IKernel kernel, ComponentModel model) { } private ComponentLifecycleExtension GetDynamicParametersExtension(ComponentModel model) { if (model.ExtendedProperties.Contains(key)) return (ComponentLifecycleExtension)model.ExtendedProperties[key]; ComponentLifecycleExtension componentLifecycleExtension = new ComponentLifecycleExtension(); model.ExtendedProperties[key] = componentLifecycleExtension; model.ResolveExtensions(true).Add(componentLifecycleExtension); return componentLifecycleExtension; } } }