Class ServiceFactoryEx<T, K, R, S, U, V, W, X, Y, Z>
Represents a generic abstract factory for creating and managing service instances of type T.
This factory leverages dependency injection and configuration patterns to facilitate the creation and lifecycle management of services.
Inheritance
Implements
Inherited Members
Namespace: Coree.NETStandard.Abstractions.ServiceFactoryEx
Assembly: Coree.NETStandard.dll
Syntax
public abstract class ServiceFactoryEx<T, K, R, S, U, V, W, X, Y, Z> : IDisposable where T : class where K : class where R : class where S : class where U : class where V : class where W : class where X : class where Y : class where Z : class
Type Parameters
| Name | Description |
|---|---|
| T | The type of service to be created and managed. This type must be a class that implements IDisposable. |
| K | Additional service type managed by this factory. |
| R | Additional service type managed by this factory. |
| S | Additional service type managed by this factory. |
| U | Additional service type managed by this factory. |
| V | Additional service type managed by this factory. |
| W | Additional service type managed by this factory. |
| X | Additional service type managed by this factory. |
| Y | Additional service type managed by this factory. |
| Z | Additional service type managed by this factory. |
Remarks
The ServiceFactoryEx<T, K, R, S, U, V, W, X, Y, Z> serves as a foundational component in applications requiring robust and configurable service instantiation.
It abstracts the complexity involved in the instantiation and management of services, thereby promoting a clean and maintainable architecture.
This class should be inherited by specific service factory implementations that can provide concrete and custom instantiation logic.
private static async Task Main(string[] args)
{
// Creating a FileService instance without params nullable ILogger.
var fileService1 = new FileService();
// Creating a FileService instance using the constructor that accepts an ILogger.
var fileService2 = new FileService(new Logger<FileService>());
// Creating a FileService instance using the factory method.
var fileService3 = FileService.CreateServiceFactory();
// Example method calls on fileService instances
await fileService1.SomeFileOperationAsync();
await fileService2.SomeFileOperationAsync();
fileService3.SomeFileOperation();
}
public partial class FileService : ServiceFactoryEx<FileService>, IFileService
{
private readonly ILogger<FileService>? _logger;
public FileService(ILogger< FileService>? logger = null)
{
this._logger = logger;
}
}
Methods
| Edit this page View SourceCreateServiceFactory()
Creates a service instance with a default logging level set to Trace.
Declaration
public static T CreateServiceFactory()
Returns
| Type | Description |
|---|---|
| T | A new instance of type |
Remarks
This method simplifies the creation of a service instance by applying a default Trace logging level. It delegates to another factory method, providing a standardized logging setup for basic tracing of application activities.
CreateServiceFactory(LogLevel)
Creates a service instance with a default logging level.
Declaration
public static T CreateServiceFactory(LogLevel logLevel)
Parameters
| Type | Name | Description |
|---|---|---|
| LogLevel | logLevel | The logging level to be used as default. |
Returns
| Type | Description |
|---|---|
| T | A new instance of type |
CreateServiceFactory(Action<IServiceCollection>?)
Creates a service instance with optional service collection configuration.
Declaration
public static T CreateServiceFactory(Action<IServiceCollection>? services = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Action<IServiceCollection> | services | An action to configure the services. Can be null. |
Returns
| Type | Description |
|---|---|
| T | A new instance of type |
CreateServiceFactory(Action<IServiceCollection>?, Action<ILoggingBuilder>?, Action<IHostBuilder>?)
Creates a service instance with optional configurations for services, logging, and host.
Declaration
public static T CreateServiceFactory(Action<IServiceCollection>? configureServices = null, Action<ILoggingBuilder>? configureLogging = null, Action<IHostBuilder>? configureHost = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Action<IServiceCollection> | configureServices | An action to configure the services. Can be null. |
| Action<ILoggingBuilder> | configureLogging | An action to configure the logging. Can be null. |
| Action<IHostBuilder> | configureHost | An action to configure the host. Can be null. |
Returns
| Type | Description |
|---|---|
| T | A new instance of type |
CreateServiceFactory(Action<IHostBuilder>?)
Creates a service instance with optional host configuration.
Declaration
public static T CreateServiceFactory(Action<IHostBuilder>? configureHost = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Action<IHostBuilder> | configureHost | An action to configure the host. Can be null. |
Returns
| Type | Description |
|---|---|
| T | A new instance of type |
Dispose()
Disposes the static instance of the host if it has been created.
Declaration
public void Dispose()