我正在从一段遗留代码中为一个名为 ImageEditor 的大型复杂类编写一组单元测试,其中图像处理和 GUI 功能没有严格划分。类中的一种方法 BaseImageChanged 似乎完全关注图像的显示方式,应该在我的单元测试中禁用以避免不必要的复杂性。测试项目为C#,原代码为VB;我的想法是为 C# 中的类创建一个装饰器,然后将方法隐藏在一个什么都不做的空方法后面。但是,当我尝试运行单元测试时,VB 代码一直引用旧的 BaseImageChanged 方法,就好像替换不存在一样。这就是我正在做的事情:
(VB类)
Public Class ImageEditor
...
Public Sub BaseImageChanged()
...
End Sub
...
End Class
(C#类)
class ImageEditorTestingClass : ImageEditor_Accessor
{
public new void BaseImageChanged() {}
}
有没有办法实现这种互操作性,还是我必须找到另一种方法?
编辑:编译器错误原来是反射问题。此外,只要基类是 ImageEditor 的访问器而不是原始 ImageEditor 类,覆盖该方法就不起作用。(没有编译器错误,但基方法的行为没有被覆盖。)