Работа с файлами конфигурации приложения

В данной статье будет разобраны основы работы с конфигурационными файлами, секциями конфигурации и созданием своих конфигурационных разделов. Перед прочтением рекомендуется ознакомиться с языком разметки xml, индексаторами, свойствами, приведением типов и всем C# в целом.
Статья
15 10 561
29
тк большинство конфигураций для расширений (логгеры, фреймворки итд) инжектятся именно в xml формате
щто, оно же через тот же конфигуратор грузится.
29
ScorpioT1000:
  • В самой статье ни слова не было о геймдеве, а ключевое слово под статьей unity3d чисто ради кликбейта
  • Сейчас речь идет конкретно о платформе .net, где xml - штатный язык разметки, и писать отдельную библиотеку чисто ради единоразового чтения параметров как минимум глупо (это без учета того, что конфигурационными файлами пользуются зачастую заказчики, и они могут по физиономии настучать за такие вот распространенные конфиги)
В тех проектах, за которые мне чаще всего не платят, я обычно самописными конфигами пользуюсь
6
ScorpioT1000, А теперь прокомментируй каждую строку в джейсоне своем и покажи редактор, который грамотно выделит синтаксис)
Может он и подойдет, для более маленьких конфигураций, а если у тебя конфигурация на 1000+ строк? Как ты будешь потом разгребаться, что есть где?
27
не знаю что за yml, знаю yaml.
для сложных типов данных как раз не xml а yaml, т.к. это больше чем разметка, есть поддержка алиасов специально для сериализации ссылочных типов
38
Msey, а в геймдеве принято не читать документацию?
29
ScorpioT1000:
Ох уж этот xml) там на жсон ещё не торопятся в геймдеве переходить?
На самом деле это проблемный вопрос, тк большинство конфигураций для расширений (логгеры, фреймворки итд) инжектятся именно в xml формате, и чтобы убедиться, что они читают конфиги в нескольких форматах, нужно, либо читать документацию, либо в случае ее отсутсвия чекать рефлектором.
По крайней мере в дотнете
38
Эргалон, лолшто, приведи примеры
{
	"configuration": {
		"configSections": {
			"section": {
				"name": "customSection",
				"type": "System.Configuration.NameValueSectionHandler"
			}
		},
		"startup": {
			"supportedRuntime": {
				"version": "v4.0",
				"sku": ".NETFramework,Version=v4.6.1"
			}
		},
		"customSection": {
			"add": {
				"key": "KeyFromCustomSection",
				"value": "valueFromCustomSection"
			}
		}
	}
}
34
xml формат не для хранения конфигов имхо, а для передачи сложных типов данных (объектов и т.п.). Есть же json/yml или хотя-бы ini.
xml
<appSettings>
      <add key="KeyA" value="Msey" />
      <add key="KeyB" value="Love" />
      <add key="KeyC" value="Goosey" />
</appSettings>
json
{
  "appSettings": {
    "KeyA": "Msey",
    "KeyB": "Love",
    "KeyC": "Goosey",
  }
}
yml
appSettings:
  KeyA: Msey
  KeyB: Love
  KeyC: Goosey
ini
[appSettings]
KeyA=Msey
KeyB=Love
KeyC=Goosey
6
ScorpioT1000, JSON для конфига не лучший вариант. В том плане, что xml в этом плане гораздо лучше читаемый и регулируемый.
38
Ох уж этот xml) там на жсон ещё не торопятся в геймдеве переходить?