c#如何在应用程序中保存配置数据的最佳方式。
c#如何在应用程序中保存配置数据的最佳方式。
此问题已有答案 :
在 C# 应用程序中保存配置数据的最佳方法是什么?
请注意,这些数据可能会动态更改。
我知道可以使用 ConfigurationManager 类。但是我听说这不是一个好的实现方法。
admin 更改状态以发布 2023年5月19日
一种简单的方法是使用配置数据对象,在本地文件夹中将其保存为应用程序名称的xml文件,在启动时读取它。\n以下是一个存储窗体位置和大小的示例。\n配置数据对象是强类型的,易于使用:\n
[Serializable()] public class CConfigDO { private System.Drawing.Point m_oStartPos; private System.Drawing.Size m_oStartSize; public System.Drawing.Point StartPos { get { return m_oStartPos; } set { m_oStartPos = value; } } public System.Drawing.Size StartSize { get { return m_oStartSize; } set { m_oStartSize = value; } } }
\n用于保存和加载的管理器类:\n
public class CConfigMng { private string m_sConfigFileName = System.IO.Path.GetFileNameWithoutExtension(System.Windows.Forms.Application.ExecutablePath) + ".xml"; private CConfigDO m_oConfig = new CConfigDO(); public CConfigDO Config { get { return m_oConfig; } set { m_oConfig = value; } } // Load configfile public void LoadConfig() { if (System.IO.File.Exists(m_sConfigFileName)) { System.IO.StreamReader srReader = System.IO.File.OpenText(m_sConfigFileName); Type tType = m_oConfig.GetType(); System.Xml.Serialization.XmlSerializer xsSerializer = new System.Xml.Serialization.XmlSerializer(tType); object oData = xsSerializer.Deserialize(srReader); m_oConfig = (CConfigDO)oData; srReader.Close(); } } // Save configfile public void SaveConfig() { System.IO.StreamWriter swWriter = System.IO.File.CreateText(m_sConfigFileName); Type tType = m_oConfig.GetType(); if (tType.IsSerializable) { System.Xml.Serialization.XmlSerializer xsSerializer = new System.Xml.Serialization.XmlSerializer(tType); xsSerializer.Serialize(swWriter, m_oConfig); swWriter.Close(); } } }
\n现在你可以在你的窗体的加载和关闭事件中使用它:\n
private void Form1_Load(object sender, EventArgs e) { // Load config oConfigMng.LoadConfig(); if (oConfigMng.Config.StartPos.X != 0 || oConfigMng.Config.StartPos.Y != 0) { Location = oConfigMng.Config.StartPos; Size = oConfigMng.Config.StartSize; } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { // Save config oConfigMng.Config.StartPos = Location; oConfigMng.Config.StartSize = Size; oConfigMng.SaveConfig(); }
\n生成的xml文件也是可读的:\n
70 278 253 229
\n非常简单,你觉得呢?