Table of Contents

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

TService

The type of the service to build.

TDiscriminatorBase

The discriminator base type.

Inheritance
TypeBasedExtensibleFactory<TService, TDiscriminatorBase>
Derived
Inherited Members

Remarks

Two versions are available:

Constructors

TypeBasedExtensibleFactory(bool)

Initializes a new instance of the TypeBasedExtensibleFactory<TService, TDiscriminatorBase> class.

protected TypeBasedExtensibleFactory(bool cacheInstances = true)

Parameters

cacheInstances bool

A value indicating whether the instances should be cached. If true the 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

factory Func<IServiceProvider, TService>

The factory building the TService according to the specified discriminator.

Type Parameters

TDiscriminator

The 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

discriminatorType Type

The discriminator implementation type.

serviceProvider IServiceProvider

The IServiceProvider that can be used to resolve additional services.

Returns

TService

The service of type TService, or null if 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

discriminator TDiscriminatorBase

The discriminator.

serviceProvider IServiceProvider

The IServiceProvider that can be used to resolve additional services.

Returns

TService

The service of type TService, or null if 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

TDiscriminator

The discriminator implementation type.

OverrideFactories(Func<IServiceProvider, TService>)

Overrides all registered factories with the specified factory.

public void OverrideFactories(Func<IServiceProvider, TService> factory)

Parameters

factory Func<IServiceProvider, TService>

The factory to be used regardless of the discriminator type.