using Microsoft.Extensions.Configuration;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Globalization;
var configuration = new ConfigurationBuilder()
.AddInMemoryCollection(new Dictionary<string, string>()
var options = configuration.Get<Item>();
Console.WriteLine("Binding success.");
Console.WriteLine("Binding failure.");
[TypeConverter(typeof(ItemConverter))]
public Item(string zero, string one)
class ItemConverter : TypeConverter
public override bool CanConvertFrom(ITypeDescriptorContext? context, Type sourceType)
return sourceType == typeof(IConfigurationSection);
public override object ConvertFrom(ITypeDescriptorContext? context, CultureInfo? culture, object value)
var section = (IConfigurationSection)value;
return new Item(section.GetValue<string>("0"), section.GetValue<string>("1"));