XML Deserialization Não Definir valores de classe
-
05-07-2019 - |
Pergunta
Eu não estou vendo o que estou fazendo de errado. Para ver o que estava sendo feito, eu mudei os valores construtor para "TESTE", depois que o XML é lido em (I verificado o que o XML é), os valores de classe ainda estão presos ao "TEST". Qualquer mais ideias? Eu estou fazendo este processo já em outra classe que funciona bem, nem eu nem alguns colegas de trabalho poderia encontrar a diferença.
XML:
<IntervalTranslatorScrubberSetting>
<LINEINDICATOR_USAGE>USG</LINEINDICATOR_USAGE>
<FILETYPE>867</FILETYPE>
<ESIDUNS>8417397824</ESIDUNS>
</IntervalTranslatorScrubberSetting>
CLASSE: (Tentei sem a XMLElement, e tentei usar XmlAttribute só para ver, nenhuma mudança)
Imports System.Xml.Serialization
Namespace Workers.Scrubber
<Serializable()> _
Public Class IntervalTranslatorScrubberSetting
#Region "Private Variables"
Private _ESIDuns As String
Private _FileType As String
Private _LineIndicator_Usage As String
#End Region
#Region "Constructors"
Sub New()
Me.ESIDuns = "TEST"
Me.FileType = "TEST"
Me.LineIndicator_Usage = "TEST"
End Sub
#End Region
#Region "Serialization"
Private _SerializMe As New XML(Of IntervalTranslatorScrubberSetting)
Public Function Serialize(ByVal XMLObject As IntervalTranslatorScrubberSetting) As String
Return _SerializMe.Serialize(XMLObject)
End Function
Public Function Deserialize(ByVal XML As String) As IntervalTranslatorScrubberSetting
Return _SerializMe.Deserialize(XML)
End Function
#End Region
#Region "Properties"
<XmlElement()> _
Public Property ESIDuns() As String
Get
Return _ESIDuns
End Get
Set(ByVal value As String)
_ESIDuns = value
End Set
End Property
<XmlElement()> _
Public Property FileType() As String
Get
Return _FileType
End Get
Set(ByVal value As String)
_FileType = value
End Set
End Property
<XmlElement()> _
Public Property LineIndicator_Usage() As String
Get
Return _LineIndicator_Usage
End Get
Set(ByVal value As String)
_LineIndicator_Usage = value
End Set
End Property
#End Region
End Class
End Namespace
XML manipulação de classe:
Imports System.IO
Imports System.Xml
Public Class XML(Of T)
Private _serializer As New System.Xml.Serialization.XmlSerializer(GetType(T))
Public Function Serialize(ByVal myobject As T) As String
'serialise to a memory stream, then read into a string
Try
Dim result As String = Nothing
If myobject IsNot Nothing Then
Using ms As New MemoryStream
Using xtw As New XmlTextWriter(ms, System.Text.Encoding.UTF8)
xtw.Formatting = Formatting.Indented
_serializer.Serialize(xtw, myobject)
'rewind
ms.Seek(0, System.IO.SeekOrigin.Begin)
Using reader As New StreamReader(ms, Text.Encoding.UTF8)
result = reader.ReadToEnd()
xtw.Close()
reader.Close()
End Using
End Using
End Using
End If
Return result
Catch ex As Exception
Throw
End Try
End Function
Public Function Deserialize(ByVal xml As String) As T
Try
'default to no object
If Not String.IsNullOrEmpty(xml) Then
Using sr As New StringReader(xml)
Return CType(_serializer.Deserialize(sr), T)
End Using
Else
Return Nothing
End If
Catch ex As Exception
Throw
End Try
End Function
End Class
Solução
Ok usando a sugestão de @maxc, eu tentei a serialização da classe, e não vi nada diferente, exceto para a capitalização do meu XML atributos vs. minhas propriedades. Eu não acho que este material foi maiúsculas de minúsculas? Mas quando eu mudei para que seus casos combinado, ele funciona, mesmo mudou-lo e voltar para confirmar.
Estranho?