/// <summary> /// Adds a singleton service of the type specified in <paramref name="serviceType"/> with an /// instance specified in <paramref name="implementationInstance"/> to the specified <see cref="IServiceCollection"/>. /// </summary> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <param name="serviceType">The type of the service to register.</param> /// <param name="implementationInstance">The instance of the service.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Singleton"/> public static IServiceCollection AddSingleton( this PollyServiceCollection services, Type serviceType, object implementationInstance) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } if (implementationInstance == null) { throw new ArgumentNullException(nameof(implementationInstance)); } var serviceDescriptor = new ServiceDescriptor(serviceType, implementationInstance); services.Add(serviceDescriptor); return(services); }
/// <summary> /// Adds a singleton service of the type specified in <typeparamref name="TService"/> to the /// specified <see cref="IServiceCollection"/>. /// </summary> /// <typeparam name="TService">The type of the service to add.</typeparam> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Singleton"/> public static IServiceCollection AddSingleton <TService>(this PollyServiceCollection services) where TService : class { if (services == null) { throw new ArgumentNullException(nameof(services)); } return(services.AddSingleton(typeof(TService))); }
/// <summary> /// Adds a transient service of the type specified in <typeparamref name="TService"/> with /// an implementation type specified in <typeparamref name="TImplementation"/> to the /// specified <see cref="IServiceCollection"/>. /// </summary> /// <typeparam name="TService">The type of the service to add.</typeparam> /// <typeparam name="TImplementation">The type of the implementation to use.</typeparam> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Transient"/> public static IServiceCollection AddTransient <TService, TImplementation>(this PollyServiceCollection services) where TService : class where TImplementation : class, TService { if (services == null) { throw new ArgumentNullException(nameof(services)); } return(services.AddTransient(typeof(TService), typeof(TImplementation))); }
private static IServiceCollection Add( PollyServiceCollection collection, Type serviceType, Func <IServiceProvider, object> implementationFactory, ServiceLifetime lifetime) { var descriptor = new ServiceDescriptor(serviceType, implementationFactory, lifetime); collection.Add(descriptor); return(collection); }
private static IServiceCollection Add( PollyServiceCollection collection, Type serviceType, Type implementationType, ServiceLifetime lifetime) { var descriptor = new ServiceDescriptor(serviceType, implementationType, lifetime); collection.Add(descriptor); return(collection); }
/// <summary> /// Adds a singleton service of the type specified in <paramref name="serviceType"/> to the /// specified <see cref="IServiceCollection"/>. /// </summary> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <param name="serviceType"> /// The type of the service to register and the implementation to use. /// </param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Singleton"/> public static IServiceCollection AddSingleton( this PollyServiceCollection services, Type serviceType) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } return(services.AddSingleton(serviceType, serviceType)); }
/// <summary> /// Adds a singleton service of the type specified in <typeparamref name="TService"/> with a /// factory specified in <paramref name="implementationFactory"/> to the specified <see cref="IServiceCollection"/>. /// </summary> /// <typeparam name="TService">The type of the service to add.</typeparam> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <param name="implementationFactory">The factory that creates the service.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Singleton"/> public static IServiceCollection AddSingleton <TService>( this PollyServiceCollection services, Func <IServiceProvider, TService> implementationFactory) where TService : class { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (implementationFactory == null) { throw new ArgumentNullException(nameof(implementationFactory)); } return(services.AddSingleton(typeof(TService), implementationFactory)); }
/// <summary> /// Adds a transient service of the type specified in <typeparamref name="TService"/> with /// an implementation type specified in <typeparamref name="TImplementation"/> using the /// factory specified in <paramref name="implementationFactory"/> to the specified <see cref="IServiceCollection"/>. /// </summary> /// <typeparam name="TService">The type of the service to add.</typeparam> /// <typeparam name="TImplementation">The type of the implementation to use.</typeparam> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <param name="implementationFactory">The factory that creates the service.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Transient"/> public static IServiceCollection AddTransient <TService, TImplementation>( this PollyServiceCollection services, Func <IServiceProvider, TImplementation> implementationFactory) where TService : class where TImplementation : class, TService { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (implementationFactory == null) { throw new ArgumentNullException(nameof(implementationFactory)); } return(services.AddTransient(typeof(TService), implementationFactory)); }
/// <summary> /// Adds a transient service of the type specified in <paramref name="serviceType"/> with a /// factory specified in <paramref name="implementationFactory"/> to the specified <see cref="IServiceCollection"/>. /// </summary> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <param name="serviceType">The type of the service to register.</param> /// <param name="implementationFactory">The factory that creates the service.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Transient"/> public static IServiceCollection AddTransient( this PollyServiceCollection services, Type serviceType, Func <IServiceProvider, object> implementationFactory) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } if (implementationFactory == null) { throw new ArgumentNullException(nameof(implementationFactory)); } return(Add(services, serviceType, implementationFactory, ServiceLifetime.Transient)); }
/// <summary> /// Adds a singleton service of the type specified in <paramref name="serviceType"/> with an /// implementation of the type specified in <paramref name="implementationType"/> to the /// specified <see cref="IServiceCollection"/>. /// </summary> /// <param name="services">The <see cref="IServiceCollection"/> to add the service to.</param> /// <param name="serviceType">The type of the service to register.</param> /// <param name="implementationType">The implementation type of the service.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceLifetime.Singleton"/> public static IServiceCollection AddSingleton( this PollyServiceCollection services, Type serviceType, Type implementationType) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } if (implementationType == null) { throw new ArgumentNullException(nameof(implementationType)); } return(Add(services, serviceType, implementationType, ServiceLifetime.Singleton)); }