Как насчет чего-то более сложного?
class ProcessingResult
{
public ProcessingResult(IEnumerable<Foo> processedFiles, IEnumerable<Foo> failures)
{
this.ProcessedFiles = processedFiles;
this.Failures = failures ;
}
public IEnumerable<Foo> ProcessedFiles { get; private set; }
public IEnumerable<Foo> Failures { get; private set; }
}
Тогда ваш метод становится:
ProcessingResult ProcessFiles(IEnumerable<Foo> files)
{
List<Foo> failures = new List<Foo>();
ProcessingResult result = new ProcessingResult(files, failures);
foreach (var foo in files)
{
// voodoo
if (error)
failures.Add(foo);
}
return result;
}
Вы можете определить наличие ошибок, спросив result.Failures.Any()
.
Класс ProcessingResult
можно легко расширить, чтобы он содержал больше деталей, таких как, в частности, проблема, связанная с каждым неисправным элементом, или несколько проблем на элемент, которые могут быть более полезными, чем простое «эта ошибка». 1011 *