Xml 将列表解析为自定义序列化程序过程的参数
我想创建一个过程,将指定为参数的列表序列化。但是我不知道如何在通过参数解析MyClass时指定GetType(列表(MyClass))。我不能在过程中“硬编码”MyClass,因为我必须将此序列化程序过程用于不同的类Xml 将列表解析为自定义序列化程序过程的参数,xml,vb.net,list,serialization,Xml,Vb.net,List,Serialization,我想创建一个过程,将指定为参数的列表序列化。但是我不知道如何在通过参数解析MyClass时指定GetType(列表(MyClass))。我不能在过程中“硬编码”MyClass,因为我必须将此序列化程序过程用于不同的类 Sub Main Dim MyList As New List(Of NameClass) MyList.Add(New NameClass("Thomas") MyList.Add(New NameClass("Michael") List_To_XMLF
Sub Main
Dim MyList As New List(Of NameClass)
MyList.Add(New NameClass("Thomas")
MyList.Add(New NameClass("Michael")
List_To_XMLFile(MyList, NameClass, "c:\temp\file.xml")
End sub
Sub List_To_XMLFile(MyList As List(Of Object), ListOfCObj As Object, Path As String)
Dim ser As XmlSerializer = New XmlSerializer(GetType(List(Of ListOfObject)))
Dim fs As FileStream = New FileStream(Path, FileMode.Create)
ser.Serialize(fs, MyList)
fs.Close()
End Sub
Public Class NameClass
Property Name As String
Sub New()
End Sub
Sub New(Name As String)
Me.Name = Name
End Sub
End Class
对象知道其类型,因此如果传递对象,则不需要传递类型
Sub List_To_XMLFile(Of T)(MyList As List(Of T), Path As String)
Dim ser As XmlSerializer = New XmlSerializer(MyList.GetType())
Dim fs As FileStream = New FileStream(Path, FileMode.Create)
ser.Serialize(fs, MyList)
fs.Close()
End Sub
并用
List_To_XMLFile(MyList, "c:\temp\file.xml")
请注意,由于我使用的是泛型类型,因此可以调用该方法来传递
新列表(NameClass的)
,新列表(OtherClass的)
,等等。因此T
采用该类型。但我不能在参数中“硬编码”NameClass。整个想法是,您可以使用不同的列表和类重用该过程,因此必须将其解析为引用/变量?这样我们就可以使用泛型类型TIt了!我担心阅读MSDN和谷歌可能要花上数周或数月的时间,我自己才能找到解决方案,也许永远不会,哈哈。我非常感谢:-):-)并将根元素的名称设置为XmlSerializer=newxmlserializer(MyList.GetType(),newxmlrootattribute(“MyRoot”)),如果有人想摆脱ArrayOfClassName
Sub List_To_XMLFile(Of T)(MyList As List(Of T), Path As String)
Dim ser As XmlSerializer = New XmlSerializer(MyList.GetType())
Dim fs As FileStream = New FileStream(Path, FileMode.Create)
ser.Serialize(fs, MyList)
fs.Close()
End Sub