class Sample {
protected bool A() {
return true; // Some logic value.
}
public void B() {
if (!A()) return;
// Some code...
}
}
Это классический функциональный подход.
static class SampleExtensions {
public static void ExecuteWithPrepare(this Action action, Func<bool> predicate) {
if (predicate == null || !predicate()) return;
action?.Invoke();
}
}
А это один из примеров реализации простого делегирования. Через методы расширений. Можно через явные сигнатуры делегатов, можно и другие варианты придумать, зависит от задачи и фантазии.