出于测试目的,我需要覆盖特定的方法调用,该调用目前在基类中实现。
Public Overridable Function CreateFactory(Of TFactory As {IManagerFactory(Of IManager), Class})() As TFactory
我想避免为该基类的每个现有子类创建一个继承类(即CLAccountManager的CLTestableAccountManager,它继承自CLBase等)。
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所有子类的方法的通用方法。
有人能指出我如何解决这个问题吗?
答案 0 :(得分:0)
您可以使用合成而不是继承吗?
换句话说,出于测试目的,创建一个实现相同接口的类型(如果没有接口则引入接口)并将所有调用分开从CreateFactory
委托给你得到的任何生产代码 - 但是为那一个呼叫执行你的自定义行为。