After taking this to Slack - here was the problem. In the base class, the default constructor is using poor mans DI to resolve the references:
[Obsolete("Use another constructor overload with dependency injection.")]
public ExecuteRequest()
: this(ServiceLocator.ServiceProvider.GetRequiredService<BaseSiteManager>(), ServiceLocator.ServiceProvider.GetRequiredService<BaseItemManager>())
{
}
In the derived class, you need to have a constructor setup that injects the required dependencies and passes those through to the base class, like this:
public class MyDerivedClass : ExecuteRequest
{
public MyDerivedClass(BaseSiteManager baseSiteManager, BaseItemManager baseItemManager)
: this(baseSiteManager, baseItemManager)
{
}
}
Now the derived class is calling the new constructor in the base class and injecting the dependencies correctly.