Files

43 lines
896 B
C#

using ModestTree;
namespace Zenject
{
[ZenjectAllowDuringValidation]
[NoReflectionBaking]
public class LazyInject<T> : IValidatable
{
readonly DiContainer _container;
readonly InjectContext _context;
bool _hasValue;
T _value;
public LazyInject(DiContainer container, InjectContext context)
{
Assert.DerivesFromOrEqual<T>(context.MemberType);
_container = container;
_context = context;
}
void IValidatable.Validate()
{
_container.Resolve(_context);
}
public T Value
{
get
{
if (!_hasValue)
{
_value = (T)_container.Resolve(_context);
_hasValue = true;
}
return _value;
}
}
}
}