Xml 将列表解析为自定义序列化程序过程的参数

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

我想创建一个过程,将指定为参数的列表序列化。但是我不知道如何在通过参数解析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_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