2 つの具象パーサーによって拡張された抽象ファイル パーサー (C#) を作成しています。どちらもいくつかのチェックを実行する必要があります。現在、抽象パーサーには検証メソッドがあり、リフレクションを使用して「test」で始まる名前のすべてのメソッドを呼び出します。そうすれば、「test」で始まる名前のメソッドを追加するのと同じくらい簡単にチェックを追加できます。
最近、リフレクションの使用と、動的ディスパッチを使用する方が良いというコメントがありました。あなたへの私の質問は、リフレクションを使用しない理由と、これをどのように実装するかということです。また、動的ディスパッチを使用してこの問題を解決するにはどうすればよいですか?
public bool Validate()
{
bool combinedResult = true;
Type t = this.GetType();
MethodInfo[] mInfos = t.GetMethods();
foreach (MethodInfo m in mInfos)
{
if (m.Name.StartsWith("Check") && m.IsPublic)
{
combinedResult &= (bool)m.Invoke(this, null);
}
}
return combinedResult;
}