我必须在应用程序设置中存储复杂类型.我认为将其存储为 XML将最有效. 问题是我不知道如何存储XML.我更喜欢将它存储为托管XML,而不是只使用一串原始XML,必须在每次访问时解析它.我设
问题是我不知道如何存储XML.我更喜欢将它存储为托管XML,而不是只使用一串原始XML,必须在每次访问时解析它.我设法将设置的Type列设置为XDocument,但我无法设置其值.
有没有办法在应用程序设置中使用XDocument或XML?
更新
我找到了一种方法,只需使用xml编辑器编辑.settings文件即可.
我将其更改为custom serializable dictionary,但是当我尝试访问setting-property时,我收到以下错误(我将其设置为默认值的序列化表示).
The property 'Setting' could not be created from it's default value. Error message: There is an error in XML document (1, 41).
任何想法将不胜感激.
我做了什么(即使我不喜欢这么多 – 但有效)是:我创建了我的值的简单可序列化类:
<Xml.Serialization.XmlRoot("Rooms")> _ Public Class Rooms : Inherits List(Of Room) End Class <Serializable()> _ Public Class Room Private m_Room As String Public Property Room() As String Get Return m_Room End Get Set(ByVal value As String) m_Room = value End Set End Property Private m_Sections As New List(Of Section) Public ReadOnly Property Sections() As List(Of Section) Get Return m_Sections End Get End Property End Class <Serializable()> _ Public Class Section Private m_Section As String Public Property Section() As String Get Return m_Section End Get Set(ByVal value As String) m_Section = value End Set End Property End Class
然后在.settings文件中,我将设置的类型(使用xml编辑器打开的.setting文件)编辑为Rooms的全名(即MyProject.Rooms).
然后我自己做了一个反序列化的示例样本,并将其复制到.settings编辑器中的value字段,以获得默认值.它很棒.
它确实不是字典,但我仍然可以在Rooms类和内部字典中实现(返回Room.Room的Sections.
任何好的想法仍然很好,我仍然在寻找一种方法,可以在.settings文件中使用IDictinoarys.
此外,我为它开了一个connection,请善待并投票!