Вам необходимо передать delegate
экземпляр; Action
будет работать нормально:
internal void AFoo(string s, Action doOtherThing)
{
if (something)
{
//do something
}
else
doOtherThing();
}
Если BFoo
не имеет параметров, он будет работать так, как написано в вашем примере:
new ClassA().AFoo("hi", BFoo);
Если для этого нужны параметры, вам нужно указать их:
new ClassA().AFoo("hi", () => BFoo(123, true, "def"));