[Silverlight][VB] 複製(clone)物件,擴充方法

  • 2723
  • 0

摘要:[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