Как может быть типичный шаблон перечисления в родовом классе? Предположим, что он реализован в этих строках
public class KnownSetting<T>
{
public readonly static KnownSetting<String> Name = new KnownSetting<String>("name", "Default Name", t => t);
public readonly static KnownSetting<int> Size = new KnownSetting<String>("size", "25", t => Converter.ToInt32);
public String Key { get; set; }
public T DefaultValue { get; set; }
public Func<String, T> Converter { get; set; }
private KnownSetting(String key, T defaultValue, Func<String, T> converter)
{
Key = key;
DefaultValue = defaultValue;
Converter = converter;
}
}
Реализация шаблона верна таким образом, поскольку конструктор остается закрытым, но при использовании этой конструкции он выглядит неправильно:
public static class Program
{
public static void main()
{
var x = KnownSetting<?>.Name;
}
}
Тогда вариант состоит в том, чтобы разделить его на два класса класса KnownSetting и реализацию установки, но тогда область конструктора не может быть закрытой, чтобы быть полученной изнутри контейнера.
Как этот шаблон может быть реализован так, чтобы его общий вид оставался скрытым от конечного пользователя, но остается строго типизированным? Есть ли более подходящий шаблон или есть лучший способ его реализовать?
Обновление Я добавил второй пример, чтобы проиллюстрировать, что я хочу, чтобы тип настройки был общим.