I have services that are derived from the same interface.
public interface IService { }
public class ServiceA : IService { }
public class ServiceB : IService
Another option is to use the extension method GetServices from Microsoft.Extensions.DependencyInjection.
Register your services as:
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
Then resolve with a little of Linq:
var services = serviceProvider.GetServices();
var serviceB = services.First(o => o.GetType() == typeof(ServiceB));
or
var serviceZ = services.First(o => o.Name.Equals("Z"));
(assuming that IService has a string property called "Name")
Make sure to have using Microsoft.Extensions.DependencyInjection;
AspNet 2.1 source: GetServices