我已经阅读了一段时间,了解如何在后续应用程序加载时保留应用程序设置。我的应用程序是Winforms应用程序。
我知道有几种方法可以做到这一点,并且来自Delphi背景我总是习惯使用.ini
文件,但我可以看到XML对于我的特定场景可能更灵活。
我正在考虑为我的应用程序提供两种可能的解决方案来保持其设置。请注意,由于两个原因,我无法使用Properties.Settings方法存储我的数据:
我的两个可能的解决方案如下:
get
和set
数据的方法,创建一个抽象类来管理写入和撤消设置。 GetBoolean("InstanceName","Setting", bool default)
和SetBoolean("InstanceName","Setting")
。然后,每个需要持久化的类可以实现此抽象类,因此,在实例化时,从提供的文件中读取其设置,并在特定属性更改时保存设置。 Serializable
,并在实例化时,确保创建类对象在类上调用LoadSettings(string filename)
方法,该方法从提供的方法加载所需的Serialized
设置文件,并在调用SaveSettings(string filename)
时写入更新。我可以使用IPersistent
接口,例如我的类可以实现的。我希望有人可以指出我应该采用哪种方法。
请注意,我需要能够在每个类的每个实例中保留某些属性。我无论如何都看不到自动化,并且必须手动完成。
请注意,这些对象是在运行时实例化的,因此我事先知道需要保留哪些对象,只知道其中的特定属性。请考虑以下示例:
假设我有一个Serial
类(我自己在System.IO.SerialPort
类周围有一些包装器属性/方法等。用户在运行时可能需要1,2,x个串口我需要一些方法来保存正在使用的串口数量,并为每个端口保存Name
,Portnumber
,Baud
,Parity
等属性。
因此,给定XML文件,我需要能够读取应用程序创建两个串行端口的信息,1个称为GPS1
,另一个称为GPS2
。对于GPS1
,Portnumber
为COM1
,GPS2
为Portnumber
为COM2
等。
唉,要序列化的数据量很大,这只是一个例子。我可以设想在数十到数百个对象(实例)中存储,每个对象有十个左右的设置。
我需要的一些重要功能:
可选择让用户选择设置文件的功能,这样我就可以创建设置“配置文件”,用户可以加载并保存到单独的文件中。 每个文件都可以在一台机器之间移动。因此,例如,如果用户在PC上创建配置文件,然后需要将PC更改为另一个,则他/她可以简单地复制该文件并加载相同的设置。
我通常只需要存储基本类型(string
,int
,float
,boolean
等),但显然存储更复杂类型的能力是优点
有人能指出我正确的方向吗?或者,如果我的两个解决方案不可行,建议另一个?