Еще одно решение, простейшая форма архитектурной точки зрения, но мне не ясно, приемлемо ли это в вашем конкретном случае, это просто иметь свойство static
в классе А.
public class A
{
private static bool failed = false;
public static bool Failed {get {return failed;} set {failed=value;}}
}
и где-то в коде вашей функции foo ():
foo(...)
{
//failure happens!
A.Failed = true;
}
Это просто и понятно, но это зависит от того, приемлемо ли это с точки зрения архитектуры вашего приложения.
Надеюсь, это поможет.