' Clone this object Public Function Clone() As Object Implements System.ICloneable.Clone Dim loData As Data = DirectCast(MemberwiseClone(), Data) ' Add to the cloning object the dataset as well ' MemberwiseClone only copies value types ' So just returning Return MyBase.MemberwiseClone() would not do if after the cloning the access to the original dataset is needed loData.oDataSet = loData.oDataSet.Copy() loData.oDataTable = loData.oDataTable.Copy() Return loData End FunctionI had to evolve it as it was not working entirely as I have more properties that need to be cloned.