如何序列化/反序列化复杂类?我只得到属性,没有数据作为回报

时间:2013-07-30 19:52:21

标签: deserialization xmlreader

这看起来很愚蠢,我知道,但仍然是:当我从XML对象反序列化并转换为所需的类对象时,我得到的只是(正确的)对象结构,但我需要的值仍为Nothing或Null(取决于类定义的属性类型。

我非常确定使用的参数XMLString肯定包含数据。不能从任何地方检索对象结构!

Generic Object不是问题,MyObject返回时的类型正确。但有没有人知道为什么对象不包含XML中的实际数据?

这是我使用的代码:

Public Shared Function ReadObjectFromXML(Of T)(XMLString As String) As T
    Dim MyObject As T

    Dim read As StringReader = New StringReader(XMLString)
    Dim serializer As New XmlSerializer(GetType(T))
    Dim reader As XmlReader = New XmlTextReader(read)

    Try
        MyObject = DirectCast(serializer.Deserialize(reader), T)
        Return MyObject

    Catch
        Return Nothing

    Finally
        reader.Close()
        read.Close()
        read.Dispose()
    End Try

End Function

谢谢!

彼得

1 个答案:

答案 0 :(得分:1)

问题可能不在(de)序列化程序中,而是在ObjectClass的定义中。

当ObjectClass具有复杂结构时,即具有实际List(of T)项的属性时,ObjectClass定义不应该在该属性之前具有任何xmltags。所有其他属性都应该有前缀。

至少在我的情况下,这解决了(通过网络搜索两天后)我的问题。

干杯!

彼得