Это полезно при загрузке построчного принтера, так, чтобы Вы знали, сколько страниц листинг кода, который Вы собираетесь распечатать, использует.;)
Вы можете использовать некоторые TypeConverters , чтобы помочь процессу (ссылка на System.Configurations.ConfigurationConverter).
Настоящий вопрос в том, почему вы хотите причинить себе столько неприятностей? Бывают случаи, когда лучше лечь и принять это, чем сопротивляться. Некоторые части фреймворка разочаровывают, если вы пытаетесь сделать это любым другим способом, кроме специально разработанного для вас ....
Лично я думаю, вам лучше отделить данные в разделе конфигурации (который, по-видимому, требует быть изменяемым), и как вы представляете это в своей объектной модели. Ничто не мешает вам иметь два представления - простую (DTO / POCO) версию для конфигурации и вашу пользовательскую версию (в данном случае неизменяемую) для реального использования в вашем приложении.
Я бы отказался от этого проклятия, потому что эта идея обречена на провал. Все обработчики раздела конфигурации должны иметь конструктор по умолчанию (без параметров). Это не относится к вашему неизменяемому объекту.
Самое простое решение - поставить другой уровень абстракции между конфигурацией и вашим приложением. Вы можете применить шаблон поставщика конфигурации, который преобразовал бы изменяемые классы раздела конфигурации «бесплатно для всех» в неизменяемые классы, которые затем потреблялись бы вашим приложением.
Я должен сказать, что именно так должны быть разделы конфигурации используемый. Я знаю, что есть опция возврата назад, но я никогда раньше ее не использовал.
Код может выглядеть примерно так: