Существует третий и гораздо лучший способ, чем AppSettings или Properties: разделы пользовательской конфигурации . Преимущества перед AppSettings:
1) Строго типизированный доступ
2) Встроенные механизмы проверки как для схемы, так и для формы.
3) На основе POCO, что делает его легко тестируемым - просто обновите свой собственный тестовый конфиг.
4) Не полагаться на магические струны. Не то чтобы вы не могли легко обернуть AppSettings в класс и получить к нему доступ таким образом, но 95% разработчиков этого не делают.
5) XML в конфигурации становится более понятным, когда вы доберетесь до дюжины или около того настроек. Также гораздо понятнее, чем биты Propterties ИМХО.
6) Не полагайтесь на визуальную студию, чтобы она работала хорошо.
Конечно, я никогда не использовал свойства, потому что сначала я получил доступ к пользовательским разделам конфигурации.
Кстати, если вы не слышали об этом, вы все еще используете их каждый день - как вы думаете, какие стандартные разделы конфигурации в файлах конфигурации .NET?
_____ РАЗДЕЛ КЛИРИФИКАЦИИ
Во-первых, большая часть этого была направлена на подход AppConfig, и перечитывание мне было неясно. Я думаю, что мы, как правило, на одной стороне - избегайте мешков с именами для конфигурации, поскольку они слишком легко ломаются. Я должен также добавить, что я веб-парень, так что пользовательские настройки - это то, что живет для меня на уровне приложений, а не в конфигурации.
1) Верно, и свойства, и пользовательские разделы конфигурации имеют строго типизированный доступ. AppSettings нет. AppSettings плохой, Props / CC хороший.
2) Когда вы загружаете раздел конфигурации, приложение выдает исключение конфигурации, если оно не предоставляет необходимую информацию или неправильную информацию. То же самое, что когда вы портите app.config или web.config. Существует немного больше инфраструктуры проверки, которую я не использовал, потому что мне нравится терпеть неудачу рано или рано или совсем нет.
3) POCO - простой старый объект C # на случай, если кто-то пропустил последние несколько лет. В любом случае, поскольку параметры конфигурации являются декоративными и объявляются с помощью атрибутов, ваши параметры конфигурации могут быть легко протестированы, поскольку вам просто нужно добавить новый MyConfigSection () и установить свойства и т. Д., В зависимости от ситуации. Как я понимаю свойства, у вас должен быть файл конфигурации с правильным XML-кодом, или вы сол. Другим преимуществом является то, что пользовательские разделы конфигурации работают со всеми другими полезными вещами, которые вы можете делать с POCO, такими как интерфейсы и внедрение зависимостей.
4) Правда, разделы «Свойства» и «Конфигурация пользователя» строго типизированы, а параметры AppSettings - нет. AppSettings плохой, Props / CC хороший.
5) Действительно нацелены на AppSettings. Я унаследовал несколько приложений с буквально 2 страницами <add name="foo" value="bar" />
в конфигурации. Это легко по сравнению с xml jibberish, который выдает свойства. С другой стороны, ваш пользовательский раздел конфигурации может быть довольно семантическим и не требующим пояснений, потому что вы объявляете имена разделов и атрибуты. Я могу довольно легко отредактировать его в блокноте на рабочем сервере, и я не буду слишком нервничать из-за того, что укрою себя ногой в крайнем случае.
Таким образом, помимо отсутствия сетки свойств на основе VS (что я бы сказал, это плохо - зачем вам сетка для редактирования конфигурации?), Пользовательские разделы конфигурации имеют много преимуществ и никаких реальных недостатков по сравнению в свойствах. Как пользовательские разделы конфигурации, так и свойства имеют огромные преимущества перед AppSettings.