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

LazyEx<T>

public class LazyEx<T> : Lazy<T>, IDisposable
using System; namespace Castle.MicroKernel.Internal { public class LazyEx<T> : Lazy<T>, IDisposable { private readonly IKernel kernel; public LazyEx(IKernel kernel, Arguments arguments) : base((Func<T>)(() => kernel.Resolve<T>(arguments))) { this.kernel = kernel; } public LazyEx(IKernel kernel, string overrideComponentName) : base((Func<T>)(() => kernel.Resolve<T>(overrideComponentName))) { this.kernel = kernel; } public LazyEx(IKernel kernel, string overrideComponentName, Arguments arguments) : base((Func<T>)(() => kernel.Resolve<T>(overrideComponentName, arguments))) { this.kernel = kernel; } public LazyEx(IKernel kernel) : base((Func<T>)kernel.Resolve<T>) { this.kernel = kernel; } public void Dispose() { if (base.IsValueCreated) kernel.ReleaseComponent(base.Value); } } }