OptionsMonitorCast
OptionsMonitorCast<Src, Dst> casts the elememt type of an IOptionsMonitor<Src>.
// Key-Values
Dictionary<string, string?> map = new Dictionary<string, string?>
{
{ "Car:License", "XYZ-123" }
};
// Create configuration
IConfigurationRoot configuration = new ConfigurationBuilder()
.AddInMemoryCollection(map)
.Build();
// Create dependency injection
IServiceCollection serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton<IServiceCollection>(serviceCollection);
serviceCollection
.AddSingleton<IConfiguration>(configuration)
.AddOptions<Car>().BindConfiguration("Car");
IServiceProvider services = serviceCollection.BuildServiceProvider();
// Acquire car
IOptionsMonitor<Car> carInfo = services.GetService<IOptionsMonitor<Car>>()!;
IOptionsMonitor<Object> carInfoObject = new OptionsMonitorCast<Car, object>(carInfo);
WriteLine(carInfoObject.CurrentValue); // "Car { License = XYZ-123 }"
public record Car
{
public string License { get; set; } = null!;
}
Full Example
Full example
using Avalanche.Options;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using static System.Console;
public class optionsmonitorcast
{
public static void Run()
{
{
// <01>
// Key-Values
Dictionary<string, string?> map = new Dictionary<string, string?>
{
{ "Car:License", "XYZ-123" }
};
// Create configuration
IConfigurationRoot configuration = new ConfigurationBuilder()
.AddInMemoryCollection(map)
.Build();
// Create dependency injection
IServiceCollection serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton<IServiceCollection>(serviceCollection);
serviceCollection
.AddSingleton<IConfiguration>(configuration)
.AddOptions<Car>().BindConfiguration("Car");
IServiceProvider services = serviceCollection.BuildServiceProvider();
// Acquire car
IOptionsMonitor<Car> carInfo = services.GetService<IOptionsMonitor<Car>>()!;
IOptionsMonitor<Object> carInfoObject = new OptionsMonitorCast<Car, object>(carInfo);
WriteLine(carInfoObject.CurrentValue); // "Car { License = XYZ-123 }"
// </01>
}
}
}