両方を実装する基本クラスと派生クラスを作成しようとしていますICloneable
。Clone
基本クラスのメソッドはすべての基本クラスのプロパティを処理し、派生クラスのClone
メソッドはすべての派生クラスのプロパティを処理し、基本クラスのメソッドを使用する必要があるように思えClone
ます。結果は次のようになります。
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
これにより、行 (1) で実行時例外が発生しますUnable to cast object of type MyBaseClass to type MySubClass
が、これには驚かなかったと告白します。その行を
Dim new_sub_class As MySubClass = MyBase.Clone
コンパイルエラーが発生しました。MyBaseClass
基本クラスのメンバーをMySubClass
基本クラスのClone
. あまり魅力的でない代替手段は、基本クラスのメンバーをサブクラスの にコピーすることClone
です。ここで何をすべきか知っている人はいますか?
ここで質問を見てきましたが、それをVB.Netに変換できません。ここに記載されている解決策が必要な場合は、そのアイデアをあきらめます。時間がたてば、 base class を作成する予定MustInherit
です。