Files
2026-09-21 12:15:57 +03:00

35 lines
893 B
C#

using System;
using Reflex.Core;
using Reflex.Enums;
namespace Reflex.Resolvers
{
internal sealed class SingletonValueResolver : IResolver
{
private readonly object _value;
public Lifetime Lifetime => Lifetime.Singleton;
public Container DeclaringContainer { get; set; }
public Resolution Resolution => Resolution.Lazy;
public SingletonValueResolver(object value)
{
Diagnosis.RegisterCallSite(this);
Diagnosis.RegisterInstance(this, value);
_value = value;
}
public object Resolve(Container resolvingContainer)
{
Diagnosis.IncrementResolutions(this);
return _value;
}
public void Dispose()
{
if (_value is IDisposable disposable)
{
disposable.Dispose();
}
}
}
}