【发布时间】:2015-04-23 14:45:34
【问题描述】:
我正在使用 XmlSerializer 来 DeepCopy 一个对象,但不知何故它没有复制嵌套属性。
<TestClass()>
Public Class ObjectClonerTest
ReadOnly _target As IObjectCloner = New ObjectCloner()
<TestMethod()>
Public Sub DeepCopy_ComplexSourceObject_NestedObjectCopied()
Dim source As New SerialisableComplexGenericParameterHelper()
source.Data() = 1
source.ComplexValue.Data() = 2
Dim actual = _target.DeepCopy(source)
Assert.AreEqual(1, actual.Data())
Assert.AreEqual(2, actual.ComplexValue.Data())
End Sub
Public Class SerialisableComplexGenericParameterHelper
Public Property Data() As Integer
Public ReadOnly ComplexValue As New SerialisableGenericParameterHelper()
End Class
Public Class SerialisableGenericParameterHelper
Public Property Data() As Integer
End Class
End Class
复制功能:
Public Function DeepCopy(Of T)(ByVal pSource As T) As T Implements IObjectCloner.DeepCopy
Using memoryStream As New MemoryStream()
Dim binaryFormatter As New XmlSerializer(GetType(T))
binaryFormatter.Serialize(memoryStream, pSource)
memoryStream.Position() = 0
Return DirectCast(binaryFormatter.Deserialize(memoryStream), T)
End Using
End Function
【问题讨论】:
标签: vb.net xmlserializer deep-copy