有没有办法修改一个类而不继承它?

时间:2015-12-18 13:14:41

标签: vb.net

假设我有ClassA,我确实可以访问源代码,但修改它的可用性有限(没有充分理由因为它在生产中有效)。

我有一个名为ClassA&#39的LibraryX。

我有一个单元测试模块,它在测试环境中调用LibraryX,而不需要对所需的各种数据库和文件进行许多必要的访问。 我想在不改变原始代码(或最少干预)的情况下存根方法

像Shadowing / overriding方法没有被继承...因为如果我继承并测试继承的类...我不再测试基类...

1 个答案:

答案 0 :(得分:0)

您说您在更改ClassA中的代码时有限制,因为它在生产中使用。

如果您被允许,您可以做的是将CLassA中的所有方法提取到接口中,然后让ClassA实现该接口。

您可以使用该接口使用模拟框架来删除方法。

这样,除了ClassA现在实现接口之外,不应该影响生产。生产中的代码仍然可以访问所有ClassA的属性或方法。

使用此方法,您有两种方法可以访问ClassA:

  1. 通过ClassA(dim _classA As New ClassA()),因为它可能是今天
  2. 通过界面(dim _classA As IClassA = new ClassA())
  3. 这是我解决这个任务的方式。 希望这可以帮助你