私はテストコンポーネントをセットアップし、それを汎用的に維持しようとしています。一般的なVisitorクラスを使用したいのですが、子孫クラスの使用についてはよくわかりません。
例:
public interface Interface_Test_Case
{
void execute();
void accept(Interface_Test_Visitor v);
}
public interface Interface_Test_Visitor
{
void visit(Interface_Test_Case tc);
}
public interface Interface_Read_Test_Case
: Interface_Test_Case
{
uint read_value();
}
public class USB_Read_Test
: Interface_Read_Test_Case
{
void execute()
{ Console.WriteLine("Executing USB Read Test Case."); }
void accept(Interface_Test_Visitor v)
{ Console.WriteLine("Accepting visitor."); }
uint read_value()
{
Console.WriteLine("Reading value from USB");
return 0;
}
}
public class USB_Read_Visitor
: Interface_Test_Visitor
{
void visit(Interface_Test_Case tc)
{ Console.WriteLine("Not supported Test Case."); }
void visit(Interface_Read_Test_Case rtc)
{ Console.WriteLine("Not supported Read Test Case."); }
void visit(USB_Read_Test urt)
{ Console.WriteLine("Yay, visiting USB Read Test case."); }
}
// Code fragment
USB_Read_Test test_case;
USB_Read_Visitor visitor;
test_case.accept(visitor);
C#コンパイラがUSB_Read_Visitor
コードフラグメントによって実行されるメソッドを決定するために使用するルールは何ですか?
テストコンポーネントの依存関係を除外しようとしています。残念ながら、現在のVisitorクラスにはvisit
、テストコンポーネントに関連しないクラスのメソッドが含まれています。私は不可能を達成しようとしていますか?