public static IServiceCollection AddScoped(this IServiceCollection collection, Type serviceType, Func <IServiceProvider, object> implementationFactory)
 {
     return(ServiceCollectionDescriptorExtensions.Add(collection, new ServiceDescriptor(serviceType, implementationFactory, ServiceLifetime.Scoped)));
 }
 public static IServiceCollection AddSingleton(this IServiceCollection collection, Type serviceType, object implementationInstance)
 {
     return(ServiceCollectionDescriptorExtensions.Add(collection, new ServiceDescriptor(serviceType, implementationInstance)));
 }
 public static IServiceCollection AddTransient(this IServiceCollection collection, Type serviceType, Type implementationType)
 {
     return(ServiceCollectionDescriptorExtensions.Add(collection, new ServiceDescriptor(serviceType, implementationType, ServiceLifetime.Transient)));
 }
 public static IServiceCollection AddScoped(this IServiceCollection collection, Type serviceType)
 {
     return(ServiceCollectionDescriptorExtensions.Add(collection, new ServiceDescriptor(serviceType, serviceType, ServiceLifetime.Scoped)));
 }