public class UtilizingProvider { private readonly IServiceProvider _provider; private readonly AnyService _service; // This service is allowed to be null because it is only populated if the service is actually available in the provider. private readonly AnyOtherService? _otherService; // This constructor injects only the service provider, // and uses it to populate the other dependencies. public UtilizingProvider(IServiceProvider provider) { _provider = provider; _service = provider.GetRequiredService(); _otherService = provider.GetService(); } // This constructor injects the service provider, and AnyService, // making sure that AnyService is not null without having to call GetRequiredService public UtilizingProvider(IServiceProvider provider, AnyService service) { _provider = provider; _service = service; _otherService = provider.GetService(); } }