配置文件-在c#中读取和写入自定义配置

本文关键字:自定义 配置 读取 配置文件 | 更新日期: 2023-09-27 17:54:35

c#中是否有一个库允许您读取和写入配置文件或某种配置文件?

我不是在谈论app.config,而更像是自定义。配置类似于ol .ini文件,其中有内置的lib/函数来读写配置文件。

我当然可以自己写,但想知道是否存在一些通用的库或方法来做到这一点…

我知道自定义配置部分,但不喜欢走那条路。

解决方案

我找到了我要找的东西。

http://www.codeproject.com/Articles/14465/Specify-a-Configuration-File-at-Runtime-for-a-C-Co

配置文件-在c#中读取和写入自定义配置

我会将我的自定义配置作为class,然后使用XmlSerializer来读取和写入配置值。

public class MyConfig
{
    const string configPath = @"...";
    public string Setting1 { get; set; }
    // ...
    public static MyConfig Load()
    {
        var serializer = new XmlSerializer(typeof(MyConfig));
        using (var reader = new StreamReader(configPath))
            return (MyConfig)serializer.Deserialize(reader);
    }
    public void Save()
    {
        var serializer = new XmlSerializer(typeof(MyConfig));
        using (var writer = new StreamWriter(configPath))
            serializer.Serialize(writer, this);
    }
}

如果您需要的只是简单的键值对(如旧的.ini或.cfg文件),那么ApplicationData也有本地存储。当前:

ApplicationData.Current.LocalSettings.Values["test"] = "Setting Value"; 
string t = (string)ApplicationData.Current.LocalSettings.Values["test"]; 

然而,这是与单个应用程序绑定的,不确定它如何处理多线程/多实例问题。

为什么不使用设置设计器(Settings.settings文件在您的项目)?

如果有人需要将更改保存到自定义配置文件(在本例中为与dll程序集同名的配置文件):

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().GetName().Name + ".dll.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
//... make modification (as you would for any app.config, etc...)
config.Save(ConfigurationSaveMode.Modified);