【发布时间】:2008-11-10 13:43:30
【问题描述】:
在我正在编写的一段 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 不会隐藏异常,而是将它们包装起来 必要时完全完成
谢谢。
【问题讨论】: