Yo may try to split Connect into two functions and call DoConnect from all derived classes where necessary:
public class Base { public virtual void Connect() { DoConnect(); } protected void DoConnect() {
If you cannot update the base class, you can do this separation on Derived1
public class Derived1 : Base { public virtual void Connect() { DoConnect(); } protected void DoConnect() { base.Connect(); } }
source share