SharpConfig — простая в использовании библиотека для работы с файлом настроек и конфигураций.
Сайт библиотеки SharpConfig
Вы можете использовать данную библиотеку в своих .NET приложениях для чтения, модификации и создания конфигураций, настроек в файлах (.cfg, .ini) или потоках в текстовом или бинарном виде.
Пример файла настроек:
[General] # Комментарий ; второй комментарий SomeInteger = 10 # также комментарий SomeFloat = 20.05 ABoolean = true
Чтение этих настроек в C# будет выглядеть следующим образом:
Configuration config = Configuration.Load("sample.cfg"); SettingCategory category = config["General"]; int someInteger = category["SomeInteger"].GetValue<int>(); float someFloat = category["SomeFloat"].GetValue<float>();
Перечисления
SahrpConfig также поддерживает разбор(парсинг) перечислений, например:
[DateInfo] Day = Monday
Теперь значение Day можно прочитать, как System.DayOfWeek, так как оно содержится в перечислении:
DayOfWeek day = config["DateInfo"]["Day"].GetValue<DayOfWeek>();
Массивы
Массивы также поддерживаются библиотекой:
[General] MyArray = [0,2,5,6]
Тип такого массива может быть интерпретирован, как укажет разработчик. Значения 0,2,5,6 могут быть к примеру типами nt, float, double, char, byte, string:
SettingCategory category = config["General"]; Setting setting = category["MyArray"]; int[] intArray = setting.GetValueArray<int>(); float[] floatArray = setting.GetValueArray<float>(); string[] stringArray = setting.GetValueArray<string>();
Назначения, соответствие
Особенностью библиотеки является назначение категорий и свойств.
Представим , что у нас есть следующая структура:
struct PersonInfo { public string Name { get; set; } public int Age { get; set; } public Gender Gender { get; set; } } enum Gender { Male, Female }
Можно прочитать весь объект прямо из файла конфигурации:
[Person] Name = Peter Age = 99 Gender = Female
Следующим образом:
PersonInfo person = new PersonInfo(); person = config["Person"].AssignTo(person);
И да, перечисления автоматически сконвертируются.
Замечение: Назначения работают только с public свойствами и основными типами, такими как bool,int, enum и т.д.