36 lines
950 B
C#
36 lines
950 B
C#
using Microsoft.Extensions.Options;
|
|
|
|
namespace Oqtane.Infrastructure
|
|
{
|
|
public class SiteOptionsManager<TOptions> : IOptions<TOptions>, IOptionsSnapshot<TOptions> where TOptions : class, new()
|
|
{
|
|
private readonly IOptionsFactory<TOptions> _factory;
|
|
private readonly IOptionsMonitorCache<TOptions> _cache; // private cache
|
|
|
|
public SiteOptionsManager(IOptionsFactory<TOptions> factory, IOptionsMonitorCache<TOptions> cache)
|
|
{
|
|
_factory = factory;
|
|
_cache = cache;
|
|
}
|
|
|
|
public TOptions Value
|
|
{
|
|
get
|
|
{
|
|
return Get(Options.DefaultName);
|
|
}
|
|
}
|
|
|
|
public virtual TOptions Get(string name)
|
|
{
|
|
name = name ?? Options.DefaultName;
|
|
return _cache.GetOrAdd(name, () => _factory.Create(name));
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
_cache.Clear();
|
|
}
|
|
}
|
|
}
|