如何序列化没有设置SerializableAttribute的对象

时间:2014-07-02 19:52:43

标签: vb.net serialization reflection

我想知道是否有像XmlSerializer那样的对象/函数 - 但是这不需要设置Serializable属性。

这就是为什么:我有第三方对象,我想提取公共属性(包括任何集合)中的信息。

并且 - 当然 - 以下例程返回错误:

There was an error reflecting type 'ThridPartyObject' 

因为该对象未使用[Serializable]属性进行编译。

Public Sub SerialMe(ThridPartyObject as Object)
    Dim objStreamWriter As New StreamWriter("C:\Object.xml")
    Dim x As New XmlSerializer(ThridPartyObject.GetType)
    x.Serialize(objStreamWriter, ThridPartyObject)
    objStreamWriter.Close()
End Sub

也许会迭代第三方对象的所有公共属性的东西? (以及这些属性的公共属性 - 等等)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用反射按字符串名称

访问属性和字段
Imports System.Reflection

Module Module1
    Sub Main()
        Dim c1 As New class1 With {.prop1 = 6, .field1 = 7}
        Console.WriteLine(c1.GetType().GetProperty("prop1").GetValue(c1, Nothing))
        Console.WriteLine(c1.GetType().GetField("field1").GetValue(c1))
    End Sub
End Module

Class class1
    Public Property prop1 As Integer
    Public field1 As Integer
End Class