[英]VB.NET, make a function with return type generic?
目前,我已經編寫了一個反序列化XML的函數,如下所示。 如何更改它,這樣就不必每次都想序列化另一個對象類型時就不必替換類型? 當前對象類型為cToolConfig。 如何使該函數通用?
Public Shared Function DeserializeFromXML(ByRef strFileNameAndPath As String) As XMLhandler.XMLserialization.cToolConfig
Dim deserializer As New System.Xml.Serialization.XmlSerializer(GetType(cToolConfig))
Dim srEncodingReader As IO.StreamReader = New IO.StreamReader(strFileNameAndPath, System.Text.Encoding.UTF8)
Dim ThisFacility As cToolConfig
ThisFacility = DirectCast(deserializer.Deserialize(srEncodingReader), cToolConfig)
srEncodingReader.Close()
srEncodingReader.Dispose()
Return ThisFacility
End Function
Public Shared Function DeserializeFromXML1(ByRef strFileNameAndPath As String) As System.Collections.Generic.List(Of XMLhandler.XMLserialization.cToolConfig)
Dim deserializer As New System.Xml.Serialization.XmlSerializer(GetType(System.Collections.Generic.List(Of cToolConfig)))
Dim srEncodingReader As IO.StreamReader = New IO.StreamReader(strFileNameAndPath, System.Text.Encoding.UTF8)
Dim FacilityList As System.Collections.Generic.List(Of cToolConfig)
FacilityList = DirectCast(deserializer.Deserialize(srEncodingReader), System.Collections.Generic.List(Of cToolConfig))
srEncodingReader.Close()
srEncodingReader.Dispose()
Return FacilityList
End Function
你是這個意思嗎?
Public Shared Function DeserializeFromXML(Of T)(ByRef strFileNameAndPath As String) As T
Dim deserializer As New System.Xml.Serialization.XmlSerializer(GetType(T))
Dim srEncodingReader As IO.StreamReader = New IO.StreamReader(strFileNameAndPath, System.Text.Encoding.UTF8)
Dim ThisFacility As T
ThisFacility = DirectCast(deserializer.Deserialize(srEncodingReader), T)
srEncodingReader.Close()
srEncodingReader.Dispose()
Return ThisFacility
End Function
Public Shared Function DeserializeFromXML1(Of T)(ByRef strFileNameAndPath As String) As System.Collections.Generic.List(Of T)
Dim deserializer As New System.Xml.Serialization.XmlSerializer(GetType(System.Collections.Generic.List(Of T)))
Dim srEncodingReader As IO.StreamReader = New IO.StreamReader(strFileNameAndPath, System.Text.Encoding.UTF8)
Dim FacilityList As System.Collections.Generic.List(Of T)
FacilityList = DirectCast(deserializer.Deserialize(srEncodingReader), System.Collections.Generic.List(Of T))
srEncodingReader.Close()
srEncodingReader.Dispose()
Return FacilityList
End Function
請注意,您可以對T施加約束,例如:
Public Shared Function DeserializeFromXML(Of T As Class)
甚至放多個約束,例如:
Public Shared Function DeserializeFromXML(Of T As {Class, New, IDisposable})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.