1

テスト目的で、現在基本クラスに実装されている特定のメソッド呼び出しをオーバーライドする必要があります。

 Public Overridable Function CreateFactory(Of TFactory As {IManagerFactory(Of IManager), Class})() As TFactory

その基本クラスの既存のサブクラスごとに継承クラスを作成する必要がないようにしたい (つまり、CLBase から継承する CLAccountManager の CLTestableAccountManager など)。

Public Class CLTestableAccountManager
  Inherits CLAccountManager

    Public Overrides Function CreateFactory(Of TFactory As {IManagerFactory(Of IManager), Class})() As TFactory

これは機能しますが、多くのクラスに適用されるため、多くの重複コードが発生します。このメソッドは、単体テストのコンテキストで使用する場合にのみオーバーライドする必要があるため、基本クラスの実装 (仮想/オーバーライド可能) には触れないでください。

残念ながら、私は単純に次のようなことはできません

Public Class CGenericBaseOverrider(Of TBase As {CLBase})
  Inherits TBase

CLBase のすべてのサブクラスのメソッドをオーバーライドする一般的な方法を実装します。

これをどのように解決できるかについて、誰かが私に指示できますか?

4

1 に答える 1

0

継承の代わりに構成を使用できますか?

言い換えれば、テスト目的で、同じインターフェースを実装するタイプを作成し (インターフェースがない場合はインターフェースを導入します)、すべての呼び出しをCreateFactoryプロダクション コードに委譲しますが、そのためのカスタム動作を実行します。 1回の呼び出し。

于 2012-08-14T08:56:26.397 に答える