I am trying to create a base class and a derived class that implement ICloneable. It seems to me that the method of the base class Cloneshould take care of all the properties of the base class and the method of the derived class Clonefor all the properties of the derived class and use the method of the base class Clone. The result looks something like this: -
Public Class MyBaseClass
Implements ICloneable
Private my_base_var As Integer
Public Function Clone() As Object Implements System.ICloneable.Clone
Dim new_base_class As MyBaseClass = New MyBaseClass
new_base_class.my_base_var = my_base_var
Return new_base_class
End Function
End Class
Public Class MySubClass
Inherits MyBaseClass
Implements ICloneable
Private my_sub_var As Integer
Public Overloads Function Clone() As Object Implements System.ICloneable.Clone
Dim new_sub_class As MySubClass = CType(MyBase.Clone, MySubClass) ' (1)
new_sub_class.my_sub_var = Me.my_sub_var
Return new_sub_class
End Function
End Class
This results in a run-time exception Unable to cast object of type MyBaseClass to type MySubClasson line (1), which I admit did not surprise me. Replacing this line with
Dim new_sub_class As MySubClass = MyBase.Clone
. , - MyBaseClass MySubClass, , Clone. Clone. - , ?
, VB.Net. , . MustInherit, .