在我目前正在编写的一段 C# 中,我需要以相同的方式处理具有相同签名的多个方法。将来可能还会有更多这些方法。我没有一遍又一遍地重复相同的逻辑,而是想到了以下内容:
private delegate bool cleanStep(BuildData bd, out String strFailure);
List<cleanStep> steps = new List<cleanStep>();
steps.Add(WriteReadme);
steps.Add(DeleteFiles);
steps.Add(TFSHelper.DeleteLabel);
steps.Add(TFSHelper.DeleteBuild);
List<cleanStep>.Enumerator enumerator = steps.GetEnumerator();
bool result = true;
while (result && enumerator.MoveNext())
{
result = enumerator.Current.Invoke(build, out strFailure);
if (!result)
{
logger.Write(LogTypes.Error, strFailure);
}
}
我认为这有一些不错的功能,但也感觉有点过度设计和混淆。
你能感谢一个更好的方法吗?
顺便提一句:
- 它不需要是事务性的。
- strFailure 不会隐藏异常,它会在必要时完全包装它们
谢谢。