Copia profunda de un objeto

¿Puedo tener alguna ayuda para realizar una copia profunda de un objeto?

Aquí está mi código:

Option Explicit On
Option Strict On

<Serializable> Public Class [Class]
Private _Name As String
Private _ListOfFields As New List(Of Field)

Public Property Name As String
    Get
        Return _Name
    End Get
    Set(value As String)
        _Name = value
    End Set
End Property

Public Property ListOfFields As List(Of Field)
    Get
        Return _ListOfFields
    End Get
    Set(value As List(Of Field))
        _ListOfFields = value
    End Set
End Property

Public Function Clone() As [Class]
    Return DirectCast(Me.MemberwiseClone, [Class])
End Function

End Class

Field es una clase que he escrito yo también.

¿Qué necesito modificar para que la función Clone () devuelva una copia profunda?

Respuestas a la pregunta(2)

Su respuesta a la pregunta