配置文件-在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我会将我的自定义配置作为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);