Class TypeBasedExtensibleFactory<TService, TDiscriminatorBase>
- Namespace
- Silverback.ExtensibleFactories
- Assembly
- Silverback.Core.dll
The base class for factories used to allow extension in additional packages, for example adding broker-specific extensions.
public abstract class TypeBasedExtensibleFactory<TService, TDiscriminatorBase> where TService : notnull where TDiscriminatorBase : IEquatable<TDiscriminatorBase>
Type Parameters
TServiceThe type of the service to build.
TDiscriminatorBaseThe discriminator base type.
- Inheritance
-
TypeBasedExtensibleFactory<TService, TDiscriminatorBase>
- Derived
- Inherited Members
Remarks
Two versions are available:
- TypeBasedExtensibleFactory<TService, TDiscriminatorBase>, using just a type as discriminator
- ExtensibleFactory<TService, TSettingsBase>, using a settings record as discriminator
Constructors
TypeBasedExtensibleFactory(bool)
Initializes a new instance of the TypeBasedExtensibleFactory<TService, TDiscriminatorBase> class.
protected TypeBasedExtensibleFactory(bool cacheInstances = true)
Parameters
cacheInstancesboolA value indicating whether the instances should be cached. If
truethe same instance will be returned for the same discriminator type.
Methods
AddFactory<TDiscriminator>(Func<IServiceProvider, TService>)
Registers the factory for the specified discriminator implementation type.
public virtual void AddFactory<TDiscriminator>(Func<IServiceProvider, TService> factory) where TDiscriminator : TDiscriminatorBase
Parameters
factoryFunc<IServiceProvider, TService>The factory building the
TServiceaccording to the specified discriminator.
Type Parameters
TDiscriminatorThe discriminator implementation type.
GetService(Type, IServiceProvider)
Returns an object of type TService according to the specified discriminator.
protected TService? GetService(Type discriminatorType, IServiceProvider serviceProvider)
Parameters
discriminatorTypeTypeThe discriminator implementation type.
serviceProviderIServiceProviderThe IServiceProvider that can be used to resolve additional services.
Returns
- TService
The service of type
TService, ornullif no factory is registered for the specified discriminator type.
GetService(TDiscriminatorBase, IServiceProvider)
Returns an object of type TService according to the specified discriminator.
protected TService? GetService(TDiscriminatorBase discriminator, IServiceProvider serviceProvider)
Parameters
discriminatorTDiscriminatorBaseThe discriminator.
serviceProviderIServiceProviderThe IServiceProvider that can be used to resolve additional services.
Returns
- TService
The service of type
TService, ornullif no factory is registered for the specified discriminator type.
HasFactory<TDiscriminator>()
Returns a boolean value indicating whether a factory for the specified discriminator type is registered.
public bool HasFactory<TDiscriminator>() where TDiscriminator : TDiscriminatorBase
Returns
- bool
A value indicating whether a factory for the specified discriminator type is registered.
Type Parameters
TDiscriminatorThe discriminator implementation type.
OverrideFactories(Func<IServiceProvider, TService>)
Overrides all registered factories with the specified factory.
public void OverrideFactories(Func<IServiceProvider, TService> factory)
Parameters
factoryFunc<IServiceProvider, TService>The factory to be used regardless of the discriminator type.