LazyEx<T>
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);
}
}
}