Class ServiceCollectionExtensions
- Namespace
- Cuemon.Extensions.DependencyInjection
- Assembly
- Cuemon.Extensions.DependencyInjection.dll
Extension methods for the IServiceCollection interface.
public static class ServiceCollectionExtensions
- Inheritance
-
ServiceCollectionExtensions
Examples
ServiceCollectionExtensions provides registration methods for IServiceCollection that support multi-contract resolution, typed options, and bulk post-configuration. This example defines an OrdersMessageHandler implementing both IMessageHandler<OrdersChannel> and IDependencyInjectionMarker<OrdersChannel>, then registers it with various lifecycle options using Add, TryAdd, and TryConfigure overloads including scoped and singleton lifetimes. It also demonstrates PostConfigureAllOf<HandlerOptions> for bulk configuration of options instances. After building the service provider and creating a scope, the concrete handler, typed contract, and marker are resolved and compared by reference. Console output confirms that all three resolve to the same instance and that HandlerOptions.Label is correctly set to "post-configured".
using System;
using Cuemon.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Cuemon.Docs.Samples.DependencyInjection
{
public static class ServiceCollectionExtensionsExample
{
public static void Demonstrate()
{
var services = new ServiceCollection();
services.Add<OrdersMessageHandler>(options =>
{
options.Lifetime = ServiceLifetime.Scoped;
});
services.TryAdd<OrdersMessageHandler>(options =>
{
options.Lifetime = ServiceLifetime.Scoped;
});
services.TryAdd<IMessageHandler<OrdersChannel>, OrdersMessageHandler>(options =>
{
options.Lifetime = ServiceLifetime.Singleton;
});
services.TryAdd(typeof(IMessageHandler<OrdersChannel>), typeof(OrdersMessageHandler), options =>
{
options.Lifetime = ServiceLifetime.Singleton;
});
services.TryAdd<HandlerOptions>(typeof(IMessageHandler<OrdersChannel>), typeof(OrdersMessageHandler), ServiceLifetime.Scoped, options =>
{
options.Label = "typed";
});
services.TryAdd<IMessageHandler<OrdersChannel>, OrdersMessageHandler, HandlerOptions>(ServiceLifetime.Scoped, options =>
{
options.Enabled = true;
});
services.TryConfigure<HandlerOptions>(options =>
{
options.Label = "configured";
});
services.PostConfigureAllOf<HandlerOptions>(options =>
{
options.Label = "post-configured";
});
using var provider = services.BuildServiceProvider();
using var scope = provider.CreateScope();
var concrete = scope.ServiceProvider.GetRequiredService<OrdersMessageHandler>();
var typedContract = scope.ServiceProvider.GetRequiredService<IMessageHandler<OrdersChannel>>();
var marker = scope.ServiceProvider.GetRequiredService<IDependencyInjectionMarker<OrdersChannel>>();
var handlerOptions = scope.ServiceProvider.GetRequiredService<IOptions<HandlerOptions>>().Value;
Console.WriteLine(object.ReferenceEquals(concrete, typedContract));
Console.WriteLine(object.ReferenceEquals(concrete, marker));
Console.WriteLine(typedContract.Name);
Console.WriteLine(handlerOptions.Label);
}
public sealed class OrdersChannel
{
}
public interface IMessageHandler
{
string Name { get; }
}
public interface IMessageHandler<TChannel> : IMessageHandler, IDependencyInjectionMarker<TChannel>
{
}
public sealed class HandlerOptions
{
public bool Enabled { get; set; }
public string Label { get; set; } = string.Empty;
}
public sealed class OrdersMessageHandler : IMessageHandler<OrdersChannel>
{
public string Name => nameof(OrdersMessageHandler);
}
}
}
Methods
Add(IServiceCollection, Type, Func<IServiceProvider, object>, ServiceLifetime)
Adds the specified service with the implementationFactory and lifetime to the services.
public static IServiceCollection Add(this IServiceCollection services, Type service, Func<IServiceProvider, object> implementationFactory, ServiceLifetime lifetime)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationFactoryFunc<IServiceProvider, object>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Add(IServiceCollection, Type, Func<IServiceProvider, object>, Action<TypeForwardServiceOptions>)
Adds the specified service with the implementationFactory and configured setup to the services.
public static IServiceCollection Add(this IServiceCollection services, Type service, Func<IServiceProvider, object> implementationFactory, Action<TypeForwardServiceOptions> setup = null)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationFactoryFunc<IServiceProvider, object>The function delegate that creates the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Add(IServiceCollection, Type, Type, ServiceLifetime)
Adds the specified service with the implementation and lifetime to the services.
public static IServiceCollection Add(this IServiceCollection services, Type service, Type implementation, ServiceLifetime lifetime)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationTypeThe implementation type of the service.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Add(IServiceCollection, Type, Type, Action<TypeForwardServiceOptions>)
Adds the specified service with the implementation and configured setup to the services.
public static IServiceCollection Add(this IServiceCollection services, Type service, Type implementation, Action<TypeForwardServiceOptions> setup = null)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationTypeThe implementation type of the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Add<TService>(IServiceCollection, Action<TypeForwardServiceOptions>)
Adds the specified TService with the configured setup to the services.
public static IServiceCollection Add<TService>(this IServiceCollection services, Action<TypeForwardServiceOptions> setup = null) where TService : class
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
Remarks
If the underlying type of TService implements IDependencyInjectionMarker<TMarker> interface then this is automatically handled.
Add<TService>(IServiceCollection, Func<IServiceProvider, TService>, Action<TypeForwardServiceOptions>)
Adds the specified TService with the configured setup to the services.
public static IServiceCollection Add<TService>(this IServiceCollection services, Func<IServiceProvider, TService> implementationFactory, Action<TypeForwardServiceOptions> setup = null) where TService : class
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TService>The function delegate that creates the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
Add<TOptions>(IServiceCollection, Type, Func<IServiceProvider, object>, ServiceLifetime, Action<TOptions>)
Adds the specified service with the implementationFactory and lifetime to the services.
public static IServiceCollection Add<TOptions>(this IServiceCollection services, Type service, Func<IServiceProvider, object> implementationFactory, ServiceLifetime lifetime, Action<TOptions> setup) where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationFactoryFunc<IServiceProvider, object>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TOptionsThe type of the configured options.
Add<TOptions>(IServiceCollection, Type, Type, ServiceLifetime, Action<TOptions>)
Adds the specified service with the implementation and lifetime to the services.
public static IServiceCollection Add<TOptions>(this IServiceCollection services, Type service, Type implementation, ServiceLifetime lifetime, Action<TOptions> setup) where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationTypeThe implementation type of the service.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TOptionsThe type of the configured options.
Add<TService, TImplementation>(IServiceCollection, ServiceLifetime)
Adds the specified TService with the TImplementation and lifetime to the services.
public static IServiceCollection Add<TService, TImplementation>(this IServiceCollection services, ServiceLifetime lifetime) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
Add<TService, TImplementation>(IServiceCollection, Action<TypeForwardServiceOptions>)
Adds the specified TService with the TImplementation and configured setup to the services.
public static IServiceCollection Add<TService, TImplementation>(this IServiceCollection services, Action<TypeForwardServiceOptions> setup = null) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
Add<TService, TImplementation>(IServiceCollection, Func<IServiceProvider, TImplementation>, ServiceLifetime)
Adds the specified TService with the TImplementation and lifetime to the services.
public static IServiceCollection Add<TService, TImplementation>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, ServiceLifetime lifetime) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TImplementation>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
Add<TService, TImplementation>(IServiceCollection, Func<IServiceProvider, TImplementation>, Action<TypeForwardServiceOptions>)
Adds the specified TService with the TImplementation and configured setup to the services.
public static IServiceCollection Add<TService, TImplementation>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, Action<TypeForwardServiceOptions> setup = null) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TImplementation>The function delegate that creates the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
Add<TService, TImplementation, TOptions>(IServiceCollection, ServiceLifetime, Action<TOptions>)
Adds the specified TService with the TImplementation and lifetime to the services.
public static IServiceCollection Add<TService, TImplementation, TOptions>(this IServiceCollection services, ServiceLifetime lifetime, Action<TOptions> setup) where TService : class where TImplementation : class, TService where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TOptionsThe type of the configured options.
Add<TService, TImplementation, TOptions>(IServiceCollection, Func<IServiceProvider, TImplementation>, ServiceLifetime, Action<TOptions>)
Adds the specified TService with the TImplementation and lifetime to the services.
public static IServiceCollection Add<TService, TImplementation, TOptions>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, ServiceLifetime lifetime, Action<TOptions> setup) where TService : class where TImplementation : class, TService where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TImplementation>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TOptionsThe type of the configured options.
PostConfigureAllOf<TOptions>(IServiceCollection, Action<TOptions>)
Registers an action used to post-configure all instances of a specific TOptions type in the services collection.
These are run after Configure<TOptions>(IServiceCollection, Action<TOptions>).
public static IServiceCollection PostConfigureAllOf<TOptions>(this IServiceCollection services, Action<TOptions> setup) where TOptions : class
Parameters
servicesIServiceCollectionThe IServiceCollection to extend.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TOptionsThe options type to be configured.
Remarks
Iterates over all the services in the collection, and if the service is of type IConfigureOptions<TOptions> and its generic type argument matches the specified TOptions type, it creates a new instance of PostConfigureOptions<TOptions> for that service and adds it to the services collection.
TryAdd(IServiceCollection, Type, Func<IServiceProvider, object>, ServiceLifetime)
Adds the specified service with the implementationFactory and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd(this IServiceCollection services, Type service, Func<IServiceProvider, object> implementationFactory, ServiceLifetime lifetime)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationFactoryFunc<IServiceProvider, object>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
TryAdd(IServiceCollection, Type, Func<IServiceProvider, object>, Action<TypeForwardServiceOptions>)
Adds the specified service with the implementationFactory and configured setup to the services if the service type has not already been registered.
public static IServiceCollection TryAdd(this IServiceCollection services, Type service, Func<IServiceProvider, object> implementationFactory, Action<TypeForwardServiceOptions> setup = null)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationFactoryFunc<IServiceProvider, object>The function delegate that creates the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
TryAdd(IServiceCollection, Type, Type, ServiceLifetime)
Adds the specified service with the implementation and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd(this IServiceCollection services, Type service, Type implementation, ServiceLifetime lifetime)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationTypeThe implementation type of the service.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
TryAdd(IServiceCollection, Type, Type, Action<TypeForwardServiceOptions>)
Adds the specified service with the implementation and configured setup to the services if the service type has not already been registered.
public static IServiceCollection TryAdd(this IServiceCollection services, Type service, Type implementation, Action<TypeForwardServiceOptions> setup = null)
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationTypeThe implementation type of the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
TryAdd<TService>(IServiceCollection, Action<TypeForwardServiceOptions>)
Adds the specified TService with the configured setup to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService>(this IServiceCollection services, Action<TypeForwardServiceOptions> setup = null) where TService : class
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
Remarks
If the underlying type of TService implements IDependencyInjectionMarker<TMarker> interface then this is automatically handled.
TryAdd<TService>(IServiceCollection, Func<IServiceProvider, TService>, Action<TypeForwardServiceOptions>)
Adds the specified TService with the configured setup to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService>(this IServiceCollection services, Func<IServiceProvider, TService> implementationFactory, Action<TypeForwardServiceOptions> setup = null) where TService : class
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TService>The function delegate that creates the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TryAdd<TOptions>(IServiceCollection, Type, Func<IServiceProvider, object>, ServiceLifetime, Action<TOptions>)
Adds the specified service with the implementationFactory and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TOptions>(this IServiceCollection services, Type service, Func<IServiceProvider, object> implementationFactory, ServiceLifetime lifetime, Action<TOptions> setup) where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationFactoryFunc<IServiceProvider, object>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TOptionsThe type of the configured options.
TryAdd<TOptions>(IServiceCollection, Type, Type, ServiceLifetime, Action<TOptions>)
Adds the specified service with the implementation and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TOptions>(this IServiceCollection services, Type service, Type implementation, ServiceLifetime lifetime, Action<TOptions> setup) where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
serviceTypeThe type of the service to register.
implementationTypeThe implementation type of the service.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TOptionsThe type of the configured options.
TryAdd<TService, TImplementation>(IServiceCollection, ServiceLifetime)
Adds the specified TService with the TImplementation and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService, TImplementation>(this IServiceCollection services, ServiceLifetime lifetime) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TryAdd<TService, TImplementation>(IServiceCollection, Action<TypeForwardServiceOptions>)
Adds the specified TService with the TImplementation and configured setup to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService, TImplementation>(this IServiceCollection services, Action<TypeForwardServiceOptions> setup = null) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TryAdd<TService, TImplementation>(IServiceCollection, Func<IServiceProvider, TImplementation>, ServiceLifetime)
Adds the specified TService with the TImplementation and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService, TImplementation>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, ServiceLifetime lifetime) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TImplementation>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TryAdd<TService, TImplementation>(IServiceCollection, Func<IServiceProvider, TImplementation>, Action<TypeForwardServiceOptions>)
Adds the specified TService with the TImplementation and configured setup to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService, TImplementation>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, Action<TypeForwardServiceOptions> setup = null) where TService : class where TImplementation : class, TService
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TImplementation>The function delegate that creates the service.
setupAction<TypeForwardServiceOptions>The TypeForwardServiceOptions which may be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TryAdd<TService, TImplementation, TOptions>(IServiceCollection, ServiceLifetime, Action<TOptions>)
Adds the specified TService with the TImplementation and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService, TImplementation, TOptions>(this IServiceCollection services, ServiceLifetime lifetime, Action<TOptions> setup) where TService : class where TImplementation : class, TService where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TOptionsThe type of the configured options.
TryAdd<TService, TImplementation, TOptions>(IServiceCollection, Func<IServiceProvider, TImplementation>, ServiceLifetime, Action<TOptions>)
Adds the specified TService with the TImplementation and lifetime to the services if the service type has not already been registered.
public static IServiceCollection TryAdd<TService, TImplementation, TOptions>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, ServiceLifetime lifetime, Action<TOptions> setup) where TService : class where TImplementation : class, TService where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the service to.
implementationFactoryFunc<IServiceProvider, TImplementation>The function delegate that creates the service.
lifetimeServiceLifetimeThe lifetime of the service.
setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TServiceThe type of the service to add.
TImplementationThe type of the implementation to use.
TOptionsThe type of the configured options.
TryConfigure<TOptions>(IServiceCollection, Action<TOptions>)
Registers the specified setup used to configure TOptions to the services if not already registered.
public static IServiceCollection TryConfigure<TOptions>(this IServiceCollection services, Action<TOptions> setup) where TOptions : class, new()
Parameters
servicesIServiceCollectionThe IServiceCollection to add the
TOptionsto.setupAction<TOptions>The
TOptionswhich need to be configured.
Returns
- IServiceCollection
A reference to
servicesso that additional configuration calls can be chained.
Type Parameters
TOptionsThe options type to be configured.