一般的な高レベル表現でプログラム可能なポンプを表す MustInherit クラスがあります。
次に、この基本クラスに MustOverride Function SetupTimeProgram があります。
Overrides の定義から読み取れるように、「一致する署名」が必要です。この宣言の署名は、オーバーライドするプロパティまたはプロシージャの署名と正確に一致する必要があります。つまり、パラメーター リストには、同じ数、同じ順序、同じデータ型のパラメーターが必要です。」</p>
この関数の引数は、ポンプに渡す必要がある TimeProgram ですが、各ポンプには独自の時間プログラムを設定する方法が異なります。このため、引数の型を高レベルで定義することはできません。
だから私は基本クラスで行います:
Public MustOverride Function SetupTimeProgram(ByRef TimeProgram As Object) As Boolean
ここで、TimeProgram は汎用オブジェクトとして定義されています。
次に、 SetupTimeProgram の各実装で、次のようなことを行います。
実装-A
Public Overrides Function SetupTimeProgram(ByRef Program As Object) As Boolean
Return DoSomething_A (Program.Time(), Program.Steps())
End Function
実装-B
Public Overrides Function SetupTimeProgram(ByRef Program As Object) As Boolean
Return DoSomething_B (Program.Line(), Program.MaxPressure, Program.MinPressure)
End Function
つまり、引数は実装ごとに完全に異なります。
私の目標は、すべてのポンプに対して同じコードを記述するために、一般的な SetupTimeProgram メソッドを作成することです。このように、クラスを使用する人は、正しい方法と形式で引数を渡すことのみに注意する必要があります。
それが正しい方法であるかどうか疑問に思っています。