Class ResolverMixins
- Namespace
- Splat
- Assembly
- Splat.Core.dll
Provides extension methods for registering services, factories, and singleton instances with an IMutableDependencyResolver in a fluent manner.
public static class ResolverMixins
- Inheritance
-
ResolverMixins
Remarks
These mixin methods simplify the registration of services, factories, and singleton or constant values with dependency resolvers. They support both generic and non-generic registrations, as well as contract-based registrations for advanced scenarios. All methods return the resolver instance to enable fluent chaining of multiple registrations.
Methods
RegisterAnd<TService>(IMutableDependencyResolver)
Registers the specified service type with the dependency resolver using its parameterless constructor, and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterAnd<TService>(this IMutableDependencyResolver resolver) where TService : new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver to which the service type is registered. Cannot be null.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to allow for method chaining.
Type Parameters
TServiceThe type of service to register. Must have a public parameterless constructor.
Remarks
This method is useful for registering simple services that can be constructed using a parameterless constructor. It enables fluent registration of multiple services in a single statement.
RegisterAnd<TService>(IMutableDependencyResolver, Func<TService>)
Registers a factory method for the specified service type and returns the dependency resolver to enable fluent chaining.
public static IMutableDependencyResolver RegisterAnd<TService>(this IMutableDependencyResolver resolver, Func<TService> factory)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service factory. Cannot be null.
factoryFunc<TService>A delegate that creates instances of the service type. Cannot be null.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to allow for method chaining.
Type Parameters
TServiceThe type of service to register with the dependency resolver.
Remarks
This method is intended for use in fluent configuration scenarios, allowing multiple service registrations to be chained together.
RegisterAnd<TService>(IMutableDependencyResolver, Func<TService>, string)
Registers a factory method for the specified service type and contract, and returns the dependency resolver to enable fluent configuration.
public static IMutableDependencyResolver RegisterAnd<TService>(this IMutableDependencyResolver resolver, Func<TService> factory, string contract)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service factory. Cannot be null.
factoryFunc<TService>A function that creates instances of the service type. Cannot be null.
contractstringAn optional contract string that distinguishes this registration from others of the same service type. May be null or empty to indicate the default contract.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to allow for method chaining.
Type Parameters
TServiceThe type of service to register with the dependency resolver.
Remarks
This method enables fluent registration of services by returning the original resolver instance. If a contract is specified, the service is registered under that contract; otherwise, it is registered as the default implementation.
RegisterAnd<TService>(IMutableDependencyResolver, string)
Registers a service of type TService with the specified contract using its default constructor, and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterAnd<TService>(this IMutableDependencyResolver resolver, string contract) where TService : new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service. Cannot be null.
contractstringAn optional contract string that distinguishes this registration from others of the same service type. Can be null or empty for the default contract.
Returns
- IMutableDependencyResolver
The same IMutableDependencyResolver instance, to allow for method chaining.
Type Parameters
TServiceThe type of service to register. Must have a public parameterless constructor.
Remarks
This method is useful for fluent registration of services that can be constructed using a parameterless constructor. If a service with the same type and contract is already registered, this registration may override the previous one depending on the resolver's implementation.
RegisterAnd<TService, TImplementation>(IMutableDependencyResolver)
Registers a service implementation with the dependency resolver and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterAnd<TService, TImplementation>(this IMutableDependencyResolver resolver) where TImplementation : TService, new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service. Cannot be null.
Returns
- IMutableDependencyResolver
The same IMutableDependencyResolver instance, to allow for method chaining.
Type Parameters
TServiceThe type of the service to register.
TImplementationThe concrete type that implements
TService. Must have a parameterless constructor.
Remarks
This method registers TImplementation as the implementation for
TService using a parameterless constructor. Subsequent calls to resolve TService will create new instances of TImplementation.
RegisterAnd<TService, TImplementation>(IMutableDependencyResolver, Func<TImplementation>)
Registers a factory method for creating instances of the specified implementation type as the given service type, and returns the dependency resolver to enable fluent configuration.
public static IMutableDependencyResolver RegisterAnd<TService, TImplementation>(this IMutableDependencyResolver resolver, Func<TImplementation> factory) where TImplementation : TService
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service.
factoryFunc<TImplementation>A factory method that creates instances of
TImplementation. Cannot be null.
Returns
- IMutableDependencyResolver
The same IMutableDependencyResolver instance, to allow for method chaining.
Type Parameters
TServiceThe type of the service to register.
TImplementationThe concrete type that implements or derives from
TService.
Remarks
This method is intended for fluent registration of services and implementations. The factory method is invoked each time an instance of the service is requested.
RegisterAnd<TService, TImplementation>(IMutableDependencyResolver, Func<TImplementation>, string)
Registers a factory method for a service implementation with the specified contract and returns the dependency resolver for chaining.
public static IMutableDependencyResolver RegisterAnd<TService, TImplementation>(this IMutableDependencyResolver resolver, Func<TImplementation> factory, string contract) where TImplementation : TService
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service.
factoryFunc<TImplementation>A factory method that creates instances of the implementation type. Cannot be null.
contractstringAn optional contract string used to distinguish between multiple registrations of the same service type. May be null or empty.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to support method chaining.
Type Parameters
TServiceThe type of the service to register.
TImplementationThe concrete type that implements the service.
Remarks
This method is intended for fluent registration of services. The implementation type must be assignable to the service type.
RegisterAnd<TService, TImplementation>(IMutableDependencyResolver, string)
Registers a service implementation with the specified contract and returns the dependency resolver to enable fluent configuration.
public static IMutableDependencyResolver RegisterAnd<TService, TImplementation>(this IMutableDependencyResolver resolver, string contract) where TImplementation : TService, new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service implementation. Cannot be null.
contractstringThe contract name used to distinguish this registration. May be null or empty to indicate the default contract.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to allow for method chaining.
Type Parameters
TServiceThe type of the service to register.
TImplementationThe concrete type that implements
TService. Must have a parameterless constructor.
Remarks
This method registers TImplementation as an implementation of
TService using a parameterless constructor. It is intended for use in fluent registration
scenarios.
RegisterConstantAnd(IMutableDependencyResolver, object, Type)
Registers a constant instance for the specified service type in the dependency resolver and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterConstantAnd(this IMutableDependencyResolver resolver, object value, Type serviceType)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the constant instance. Cannot be null.
valueobjectThe constant instance to associate with the specified service type. May be null if the service type allows null values.
serviceTypeTypeThe type of service to associate with the constant instance. This type will be used to resolve the registered value.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, enabling method chaining.
Remarks
This method is useful for registering singleton or pre-constructed instances with the dependency resolver. Subsequent resolutions of the specified service type will return the provided constant instance.
RegisterConstantAnd(IMutableDependencyResolver, object, Type, string)
Registers a constant value for the specified service type and contract in the dependency resolver, and returns the resolver to enable method chaining.
public static IMutableDependencyResolver RegisterConstantAnd(this IMutableDependencyResolver resolver, object value, Type serviceType, string contract)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the constant value. Cannot be null.
valueobjectThe constant value to register for the specified service type and contract. May be null if the service type allows null values.
serviceTypeTypeThe type of service to associate with the registered value. Cannot be null.
contractstringAn optional contract name to distinguish between multiple registrations of the same service type. May be null or empty.
Returns
- IMutableDependencyResolver
The same IMutableDependencyResolver instance, enabling method chaining.
Remarks
This method is intended for use with dependency injection scenarios where a specific instance should always be returned for a given service type and contract. The registered value will be returned for all subsequent resolutions of the specified service type and contract.
RegisterConstantAnd<TService>(IMutableDependencyResolver)
Registers a single, shared instance of the specified service type in the dependency resolver and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterConstantAnd<TService>(this IMutableDependencyResolver resolver) where TService : new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service instance. Cannot be null.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to support method chaining.
Type Parameters
TServiceThe type of service to register. Must have a public parameterless constructor.
Remarks
This method creates a single instance of the service type and registers it as a constant, ensuring that all resolutions of the service return the same object. This is useful for registering stateless or singleton services.
RegisterConstantAnd<TService>(IMutableDependencyResolver, string)
Registers a singleton instance of the specified service type and returns the resolver to enable method chaining.
public static IMutableDependencyResolver RegisterConstantAnd<TService>(this IMutableDependencyResolver resolver, string contract) where TService : new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service instance. Cannot be null.
contractstringAn optional contract string used to distinguish between multiple registrations of the same service type. May be null or empty.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to allow for fluent registration of additional services.
Type Parameters
TServiceThe type of service to register. Must have a public parameterless constructor.
Remarks
This method creates a single instance of the specified service type using its parameterless constructor and registers it as a constant for the given contract. Subsequent resolutions of the service will return the same instance.
RegisterConstantAnd<TService>(IMutableDependencyResolver, TService)
Registers a constant instance of the specified service type and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterConstantAnd<TService>(this IMutableDependencyResolver resolver, TService value)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the service. Cannot be null.
valueTServiceThe constant instance of the service to register. This instance will always be returned for the specified service type.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to support method chaining.
Type Parameters
TServiceThe type of the service to register.
Remarks
This method is typically used to register singleton or pre-constructed service instances. The registered value will be returned for all requests for the specified service type.
RegisterConstantAnd<TService>(IMutableDependencyResolver, TService, string)
Registers a constant instance of the specified service type with the dependency resolver and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterConstantAnd<TService>(this IMutableDependencyResolver resolver, TService value, string contract)
Parameters
resolverIMutableDependencyResolverThe dependency resolver to which the service instance will be registered. Cannot be null.
valueTServiceThe constant instance of the service to register. This instance will always be returned for the specified contract and service type.
contractstringAn optional contract string used to distinguish between multiple registrations of the same service type. Can be null or empty.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, enabling method chaining.
Type Parameters
TServiceThe type of the service to register.
Remarks
Use this method to register a singleton or constant value for a service type, ensuring that the same instance is returned for all requests matching the specified contract.
RegisterLazySingletonAnd(IMutableDependencyResolver, Func<object>, Type)
Registers a singleton service with lazy initialization and returns the dependency resolver for chaining.
public static IMutableDependencyResolver RegisterLazySingletonAnd(this IMutableDependencyResolver resolver, Func<object> valueFactory, Type serviceType)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the singleton service. Cannot be null.
valueFactoryFunc<object>A delegate that provides the instance of the service when first requested. The factory is invoked only once, and the same instance is returned for subsequent requests.
serviceTypeTypeThe type of the service to register as a singleton. Cannot be null.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, enabling method chaining.
Remarks
The service instance is created on the first request using the specified factory and is shared for all subsequent requests. This method is useful for registering expensive or stateful services that should be instantiated only once.
RegisterLazySingletonAnd(IMutableDependencyResolver, Func<object>, Type, string)
Registers a singleton service in the dependency resolver using a factory method that is lazily evaluated, and returns the resolver to allow for method chaining.
public static IMutableDependencyResolver RegisterLazySingletonAnd(this IMutableDependencyResolver resolver, Func<object> valueFactory, Type serviceType, string contract)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the singleton service. Cannot be null.
valueFactoryFunc<object>A delegate that provides the instance of the service when first requested. The factory is invoked only once, and the same instance is returned for subsequent requests.
serviceTypeTypeThe type of the service to register. This specifies the contract type that consumers will request.
contractstringAn optional contract name used to distinguish between multiple registrations of the same service type. May be null or empty for the default contract.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, enabling method chaining.
Remarks
The service instance is created the first time it is requested, and the same instance is returned for all subsequent requests. This method is thread-safe and ensures that the factory is invoked only once, even in multithreaded scenarios.
RegisterLazySingletonAnd<TService>(IMutableDependencyResolver)
Registers a lazily instantiated singleton of type TService with the specified dependency resolver and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterLazySingletonAnd<TService>(this IMutableDependencyResolver resolver) where TService : new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver with which to register the singleton service. Cannot be null.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, to support method chaining.
Type Parameters
TServiceThe type of service to register. Must have a public parameterless constructor.
Remarks
The singleton instance of TService is created on first request and reused for subsequent resolutions. This method is useful for registering services that are expensive to create or should be instantiated only once per resolver.
RegisterLazySingletonAnd<TService>(IMutableDependencyResolver, Func<TService>)
Registers a singleton service of type TService with the resolver using a factory method, and returns the resolver to enable method chaining.
public static IMutableDependencyResolver RegisterLazySingletonAnd<TService>(this IMutableDependencyResolver resolver, Func<TService> valueFactory)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the singleton service. Cannot be null.
valueFactoryFunc<TService>A factory method used to create the singleton instance of TService. Cannot be null.
Returns
- IMutableDependencyResolver
The same IMutableDependencyResolver instance, to allow for fluent configuration.
Type Parameters
TServiceThe type of the service to register. Must have a public parameterless constructor.
Remarks
The singleton instance of TService is created lazily and only once, upon the first request. Subsequent requests will return the same instance. This method is intended for use in fluent registration scenarios.
RegisterLazySingletonAnd<TService>(IMutableDependencyResolver, Func<TService>, string)
Registers a singleton service of type TService using a lazy value factory and returns the resolver for chaining.
public static IMutableDependencyResolver RegisterLazySingletonAnd<TService>(this IMutableDependencyResolver resolver, Func<TService> valueFactory, string contract)
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the singleton service. Cannot be null.
valueFactoryFunc<TService>A function that creates an instance of TService when first requested. Cannot be null.
contractstringAn optional contract string used to distinguish between multiple registrations of the same service type. May be null.
Returns
- IMutableDependencyResolver
The same IMutableDependencyResolver instance, enabling method chaining.
Type Parameters
TServiceThe type of the service to register. Must have a public parameterless constructor.
Remarks
The service instance is created lazily and only once, upon the first request. Subsequent requests return the same instance. This method is useful for registering expensive or stateful services that should be instantiated only when needed.
RegisterLazySingletonAnd<TService>(IMutableDependencyResolver, string)
Registers a singleton service of type TService using lazy initialization and returns the dependency resolver for chaining.
public static IMutableDependencyResolver RegisterLazySingletonAnd<TService>(this IMutableDependencyResolver resolver, string contract) where TService : new()
Parameters
resolverIMutableDependencyResolverThe dependency resolver in which to register the singleton service. Cannot be null.
contractstringAn optional contract string used to distinguish between multiple registrations of the same service type.
Returns
- IMutableDependencyResolver
The same dependency resolver instance, enabling method chaining.
Type Parameters
TServiceThe type of the service to register. Must have a public parameterless constructor.
Remarks
The service instance is created on first request and shared for all subsequent requests. This method is useful for registering services that are expensive to create or should only be instantiated once per resolver.