摘要:[Silverlight][VB] 複製(clone)物件,擴充方法
請參見這裡([Extension Method]使用擴充方法來做物件的深層複製), 一般來說,使用這位大大的code就可以了,
不過Silverlight的.NET常常都是半殘的狀態,叫不到序列化裡的 Formatters.Binary
以至於無法使用SerializationFormat、BinaryFormatter,本來想放棄的,但仔細看code中其實有兩部份,所以我就拿掉前面,只用XmlSerializer
這樣也是可以的,至於會不會有啥後果,我也不知道,序列化不常用,沒很熟,反正以下的code我能用就是了
Imports System.Runtime.CompilerServices
Imports System.Xml.Serialization
Module Mod1
#Region "Const"
Const BUFFER_SIZE As Integer = 512
#End Region
<Extension()> _
Public Function Clone(Of T)(ByVal obj As T) As T
Dim x As New XmlSerializer(obj.GetType())
Dim ms As New MemoryStream(BUFFER_SIZE)
x.Serialize(ms, obj)
ms.Seek(0, SeekOrigin.Begin)
Return DirectCast(x.Deserialize(ms), T)
End Function
End Module