如何在VB.NET中编写易于XML序列化的对象?
我正在用VB.NET编写一个小应用程序,我希望其中的一些类能够将自己写入XML,作为“保存”功能。我见过用于生成VB类的XSD文件,这些VB类可以很容易地将自己序列化为XML,也可以将自己序列化为XML。如果我有任何预先存在的XML格式需要遵守,因为我只是自己创建类,我该怎么做呢?既然你问过如何使它“简单”,那么有三条规则可以帮助保持事情非常简单:如何在VB.NET中编写易于XML序列化的对象?,xml,vb.net,xml-serialization,Xml,Vb.net,Xml Serialization,我正在用VB.NET编写一个小应用程序,我希望其中的一些类能够将自己写入XML,作为“保存”功能。我见过用于生成VB类的XSD文件,这些VB类可以很容易地将自己序列化为XML,也可以将自己序列化为XML。如果我有任何预先存在的XML格式需要遵守,因为我只是自己创建类,我该怎么做呢?既然你问过如何使它“简单”,那么有三条规则可以帮助保持事情非常简单: 仅使用可序列化的属性类型 不要将集合或数组用作需要序列化的属性 没有“坏”副作用的属性。所谓“坏”,我主要是指两个公共属性,它们由相同的底层私有字段
对于第2项,快速修复方法是使用数据表或数据集,因为这些数据表或数据集是可序列化的。要使用简单的“保存”功能,请使用.net xml序列化[1]或自己创建一个内存中的日期集,以便在尽可能多的日期表中保存“世界状态”。这取决于您试图持久化的对象模型有多复杂
[1] 我能很快找到的最简单的示例(很抱歉,您会得到要点)使用System.Xml和System.Xml.Serialization命名空间。它们描述的类可以用来用相应的标记注释类的成员 例如(在C中): 或在VB.NET中(可能语法不完全正确): 或VB:
Using xmls As New XmlSerializer(gettype(Foo)), _
tw As TextWriter = New StreamWriter("foo.xml")
''//use it!
End Using
.您确定可以将使用与XmlSerializer
一起使用吗?我收到一个错误,说它必须实现IDispose()
,但它似乎没有实现。我到处寻找不同的版本/实现,但都无济于事。我错过什么了吗?
<XmlRoot ("foo")> _
Public Class Foo
<XmlAttribute ("bar")>_
Public bar As String
<XmlAttribute ("baz")>_
Public baz As String
End Class
using(XmlSerializer xmls = new XmlSerializer(typeof(Foo)){
TextWriter tw = new StreamWriter( "foo.xml" );
//use it!
}
Using xmls As New XmlSerializer(gettype(Foo)), _
tw As TextWriter = New StreamWriter("foo.xml")
''//use it!
End Using