我正在编写一个由两个具体解析器扩展的抽象文件解析器(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;
}