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 и т.д.