Cópia profunda de um objeto

Por favor, posso ter alguma ajuda para realizar uma cópia profunda de um objeto.

Aqui está o meu 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

Campo é uma classe que eu mesmo escrevi.

O que preciso modificar para a função Clone () para retornar uma cópia detalhada?

questionAnswers(2)

yourAnswerToTheQuestion