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

LazyOfTComponentLoader

Lazily adds component for Lazy<T>.
using Castle.Core; using Castle.MicroKernel.Internal; using Castle.MicroKernel.Registration; using System; using System.Reflection; namespace Castle.MicroKernel.Resolvers { [Singleton] public class LazyOfTComponentLoader : ILazyComponentLoader { public IRegistration Load(string name, Type service, Arguments arguments) { if (service == (Type)null) return null; if (!service.GetTypeInfo().IsGenericType) return null; if (service.GetGenericTypeDefinition() != typeof(Lazy<>)) return null; return Component.For(typeof(Lazy<>)).ImplementedBy(typeof(LazyEx<>), LazyServiceStrategy.Instance).LifeStyle.Transient.NamedAutomatically("castle-auto-lazy"); } } }