0

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

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

通用对象不是问题,返回时的 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

谢谢!

彼得

4

1 回答 1

1

问题可能不在(反)序列化器中,而在 ObjectClass 的定义中。

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

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

干杯!

彼得

于 2013-07-31T20:54:43.610 回答