ジェネリックイベント用の汎用コントローラクラスを作成しようとしています。しかし、これらのイベントは依然としてクラス変数にアクセスする必要があります。ですから、私の考えはModelBaseclass変数をBaseClass変数として_ClassVarとして作成することです。これは他のすべてのクラスのControllerクラスから継承されています。しかし、派生したコントローラクラスは_ClassVarを必要なものでオーバーライドする必要があります。VB.NETを使用してクラス内で宣言された変数を上書きできますか?
私はこれをしたいので、ControllerBaseClassはすべての派生クラスが使用するすべての汎用関数を持つことができます。
モデル:
Public Class ModelBaseClass
Public Overridable Function Foo() As String
Return "Name"
End Function
End Class
Public Class ModelDerivedClass1
Inherits ModelBaseClass
Public Overrides Function Foo() As String
Return "ModelDerivedClass1"
End Function
End Class
Public Class ModelDerivedClass2
Inherits ModelBaseClass
Public Overrides Function Foo() As String
Return "ModelDerivedClass2"
End Function
End Class
コントローラー:polymorphismへ
Public Class ControllerBase
Public Overridable _ClassVar As ModelBaseClass <----
Public Function PrintFoo() As String
Return _ClassVar.Foo()
End Function
End Class
Public Class ControllerDerivedClass1
Inherits ControllerBase
Public Overrides _ClassVar As ModelDerivedClass1 <----
End Class
Public Class ControllerDerivedClass2
Inherits ControllerBase
Public Overrides _ClassVar As ModelDerivedClass2 <----
End Class
-1 Overcomplicatesを_ClassVarかOPのような「明示的な」多型が実装しようとしていたの必要がないことを実現することなく。 – siride
これは過度の複雑さではありません。最も単純な形式の 'Generics'です。 – decyclone
私はジェネリックアプローチでprobを見ません。コーディーグレイスの答えかデシクローンのどちらかが機能します。コントローラがそれぞれの派生クラスに固有のモデルで機能を使用しなければならない場合、Codyの手法ではキャスティングが少し必要になり、+ MIGHT +ではいくつかの限定された利点を提供しますが、それはそれです。 – DarinH