WPF 分享一种设置程序保存配置文件的方法
2021-06-29 22:08
标签:map 界面 配置文件 文件 close ack service not serial 最近需要做一个配置程序,主要给其他程序做相关配置的小工具。 配置项蛮多的,一般我们都是将各个配置项写到配置文件的节点中,比如App.config文件或者自定义的xml文件。 因为我用的是wpf,MVVM,所以其实界面上的所有数据我都存着ViewModel的实体属性中。比如我们新建一个Model,叫SettingModel,界面上不管做任何更改,其实数据都和SettingModel中一样。 我们将这个SettingModel的内存数据序列化到本地文件。等下次运行程序时,再去反序列化将SettingModel的数据加载到ViewModel中。 序列化和反序列化方法 但是实行过程中遇到个问题,因为使用了MVVM,Model都实现了INotifyPropertyChanged接口。但是序列化的时候不可以序列化。 于是我们需要再添加一个Model,结构和SettingModel一样,但是不实现INotifyPropertyChanged接口。 此Model类上添加 [Serializable]标记。 这样我们在保存时,需要将SettingModel的数据赋给SettingModelBack,我们可以用AutoMapper来实现,很方便。 我们在应用程序中,想读取配置文件中的信息,我们可以反序列化配置文件,将数据还原到Model中。 这种保存配置文件的方式,有个好处就是如果有新的配置项需要保存,我们只需要在Model中添加相应的属性,并绑定到界面上(WPF本来也需要做这个事),而不需要再去写创建新节点,修改新节点的代码。但是也有个不方便的地方,就是不可以在文本中修改配置文件了,只能通过配置工具修改,因为保存到本地config.dat中的文件打开后是乱码了。 WPF 分享一种设置程序保存配置文件的方法 标签:map 界面 配置文件 文件 close ack service not serial 原文地址:https://www.cnblogs.com/czly/p/10004621.html public class SettingModel:ObservableObject
{
private string _FConnStr;
public string FConnStr
{
get { return _FConnStr; }
set { _FConnStr = value; RaisePropertyChanged("FConnStr"); }
}
private string _DBType;
public string DBType
{
get { return _DBType; }
set { _DBType = value; RaisePropertyChanged("DBType"); }
}
private string _SupplierName;
public string SupplierName
{
get { return _SupplierName; }
set { _SupplierName = value; RaisePropertyChanged("SupplierName"); }
}
private string _SupplierNo;
public string SupplierNo
{
get { return _SupplierNo; }
set { _SupplierNo = value; RaisePropertyChanged("SupplierNo"); }
}
private List
public static void MySerialize
[Serializable]
public class SettingModelBack
{
private string _FConnStr;
public string FConnStr
{
get { return _FConnStr; }
set { _FConnStr = value;}
}
private string _DBType;
public string DBType
{
get { return _DBType; }
set { _DBType = value;}
}
private string _SupplierName;
public string SupplierName
{
get { return _SupplierName; }
set { _SupplierName = value; }
}
private string _SupplierNo;
public string SupplierNo
{
get { return _SupplierNo; }
set { _SupplierNo = value; }
}
private List
private void Save()
{
var config = AutoMapper.Mapper.Map
string path = AppDomain.CurrentDomain.BaseDirectory + "/Config/config.dat";
var configData= MyBackSerialize
上一篇:持续api管理翻译
下一篇:c# 数字转成千分位字符串