This tutorial explains advanced functionality, such as setting transfer, category managing, and LINQ enumerating.
When I delete you maybe I'll stop feeling so bad
Individual settings can be deleted using the .DeleteKey() method, passing the key of a setting. If the setting doesn't exist, this call will do nothing.
var config; // Assume initialized // Delete a global setting config.DeleteKey("Timespan"); // Delete a categorized setting config.DeleteKey("User1:Token");
You can also delete entire categories in a single call, using the .DeleteSection() method. In this case, pass the name of a category as a parameter:
var config; // Assume initialized config.Write("User:Name", "Foo"); config.Write("User:Age", 18); config.Write("ServerPort", 80); // Delete the User category config.DeleteSection("User"); // Both User:Name and User:Age are deleted // ServerPort isn't part of the User category, so it remains unaffected
Settings can be transferred from one file to another.
This process generates a copy of all settings in the source file, leaving it untouched. This is useful to create backups, for example.
To do so, use the .TransferTo() method, passing another config instance:
var config = XmlConfig.From("source.xml"); // Transfer to another XML file config.TransferTo(XmlConfig.From("target.xml")); // Transfer to a different file format config.TransferTo(IniConfig.From("target.ini"));
Note that you can even transfer between different file formats while keeping all data, including comments.
Time to cast some magic.
There are two main ways to obtain enumerables from a settings file:
Call .SettingsIn() to receive an instance of IDictionary<string, string> with all settings inside the specified section.
Or call .AsTransferable().ReadAll() to receive an instance of IEnumerable<Setting> with all settings in the file.
var config; // Assume initialized // Operate on the settings of a category var settings = config.SettingsIn("User"); var result = settings.Where(kvp => kvp.Key.Length > 2) .Select(kvp => kvp.Value); // Operate on all settings in the file var settings = config.AsTransferable().ReadAll(); var result = settings.Where(s => s.Key is "Age") .OrderBy(n => n) .Select(s => int.Parse(s.Value)) .Distinct();