Table of Contents

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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementationFactory Func<IServiceProvider, object>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementationFactory Func<IServiceProvider, object>

The function delegate that creates the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementation Type

The implementation type of the service.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementation Type

The implementation type of the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TService>

The function delegate that creates the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementationFactory Func<IServiceProvider, object>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementation Type

The implementation type of the service.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the service to.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TImplementation>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TImplementation>

The function delegate that creates the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The type of the implementation to use.

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TImplementation>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The type of the implementation to use.

TOptions

The 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

services IServiceCollection

The IServiceCollection to extend.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementationFactory Func<IServiceProvider, object>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementationFactory Func<IServiceProvider, object>

The function delegate that creates the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementation Type

The implementation type of the service.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementation Type

The implementation type of the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so 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

services IServiceCollection

The IServiceCollection to add the service to.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TService>

The function delegate that creates the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementationFactory Func<IServiceProvider, object>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the service to.

service Type

The type of the service to register.

implementation Type

The implementation type of the service.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the service to.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TImplementation>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TImplementation>

The function delegate that creates the service.

setup Action<TypeForwardServiceOptions>

The TypeForwardServiceOptions which may be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The 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

services IServiceCollection

The IServiceCollection to add the service to.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The type of the implementation to use.

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the service to.

implementationFactory Func<IServiceProvider, TImplementation>

The function delegate that creates the service.

lifetime ServiceLifetime

The lifetime of the service.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TService

The type of the service to add.

TImplementation

The type of the implementation to use.

TOptions

The 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

services IServiceCollection

The IServiceCollection to add the TOptions to.

setup Action<TOptions>

The TOptions which need to be configured.

Returns

IServiceCollection

A reference to services so that additional configuration calls can be chained.

Type Parameters

TOptions

The options type to be configured.