<Serializable()>
Public Class aaa1_Class
Property bbb1 As New bbb1_Class
End Class
<Serializable()>
Public Class bbb1_Class
Property p1 As Single
Property p2 As Single
End Class
<Extension()>
Public Function DeepCopy(ByVal target As Object) As Object
Dim result As Object
Dim b As New BinaryFormatter
Dim mem As New System.IO.MemoryStream()
b.Serialize(mem, target)
mem.Position = 0
result = b.Deserialize(mem)
mem.Close()
Return result
End Function
Sub
Dim test As New aaa1_Class
Dim test2 = test.DeepCopy
End Sub
はエラーが出ないのですが、
<Serializable()>
Public Class aaa2_Class
Property bbb2 As bbb2_Structure
End Class
Public Structure bbb2_Structure
Property p1 As Single
Property p2 As Single
End Class
Sub
Dim test As New aaa2_Class
Dim test2 = test.DeepCopy
End Sub
だとエラーが出ます。
クラスの中にクラスが入っている場合には
DeepCopyできますが、
Structureの場合にはできないようです。
StructureもまとめてDeepCopyするにはどのようにしたら良いですか?
■No93478 (かかか さん) に返信
Structure も Serializable をつけていただくとして、ジェネリック使うといろいろ捗ります。
<Extension()>
Public Function DeepCopy(Of T)(ByVal target As T) As T
Dim b As New BinaryFormatter
Using mem As New System.IO.MemoryStream()
b.Serialize(mem, target)
mem.Position = 0
Return DirectCast(b.Deserialize(mem), T)
End Using
End Function