В фрагменте 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 не скрывает исключения, а переносит их
полностью при необходимости
Спасибо.