画像処理と GUI 機能が厳密に分割されていないレガシー コードから、ImageEditor と呼ばれる大規模で複雑なクラスの一連の単体テストを作成しています。クラスのメソッドの 1 つである 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 のアクセサーである限り、メソッドのオーバーライドは機能しませんでした (コンパイラ エラーは発生しませんが、基本メソッドの動作はオーバーライドされませんでした)。