File: OptionsWrapperMonitor.cs
Web Access
Project: src\src\Middleware\HttpLogging\test\Microsoft.AspNetCore.HttpLogging.Tests.csproj (Microsoft.AspNetCore.HttpLogging.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Extensions.Options;
 
namespace Microsoft.AspNetCore.HttpLogging;
 
internal class OptionsWrapperMonitor<T> : IOptionsMonitor<T>
{
    private event Action<T, string> _listener;
 
    public OptionsWrapperMonitor(T currentValue)
    {
        CurrentValue = currentValue;
    }
 
    public IDisposable OnChange(Action<T, string> listener)
    {
        _listener = listener;
        return null;
    }
 
    public T Get(string name) => CurrentValue;
 
    public T CurrentValue { get; }
 
    internal void InvokeChanged()
    {
        _listener.Invoke(CurrentValue, null);
    }
}