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拥有的任何生产代码 - 但为此执行你的自定义行为一通电话。

于 2012-08-14T08:56:26.397 回答