AnnotationServiceBuilder.Patterns 1.0.0

dotnet add package AnnotationServiceBuilder.Patterns --version 1.0.0
                    
NuGet\Install-Package AnnotationServiceBuilder.Patterns -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AnnotationServiceBuilder.Patterns" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AnnotationServiceBuilder.Patterns" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="AnnotationServiceBuilder.Patterns" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AnnotationServiceBuilder.Patterns --version 1.0.0
                    
#r "nuget: AnnotationServiceBuilder.Patterns, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AnnotationServiceBuilder.Patterns@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AnnotationServiceBuilder.Patterns&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=AnnotationServiceBuilder.Patterns&version=1.0.0
                    
Install as a Cake Tool

AnnotationServiceBuilder.Patterns

AnnotationServiceBuilder.Patterns is a library that provides support for implementing common design patterns in .NET applications using custom annotations. This library is part of the AnnotationServiceBuilder ecosystem and focuses on facilitating the use of design patterns such as Factory via annotation-based service registration.

Key Features

  • Factory Pattern: Easily register factories with the DI container using [FactoryPattern], allowing for flexible object creation and dependency management.
  • Simplifies codebase by removing the need for manual service registration.
  • Integrates seamlessly with .NET dependency injection.

Installation

To install AnnotationServiceBuilder.Patterns, use the following command:

dotnet add package AnnotationServiceBuilder.Patterns

Alternatively, you can install it through the NuGet Package Manager in Visual Studio.

Usage

Factory Pattern

The FactoryPatternAttribute allows for the annotation-based registration of factory classes. These classes should implement a factory interface, typically following the Factory Design Pattern, to create instances of specific types.

[FactoryPattern(typeof(IMyFactory), ServiceLifetime.Scoped)]
public class MyFactory : IMyFactory
{
    public MyObject Create()
    {
        return new MyObject();
    }
}
  • IMyFactory: The interface that the factory implements.
  • ServiceLifetime.Scoped: The lifetime of the factory in the DI container (can also be Singleton or Transient).
AnnotationDesignPatternRegistrar.AddFactoryPatternServices(builder.Services);

This will automatically scan your assembly for classes marked with the [FactoryPattern] attribute and register them in the DI container.

Example: Registering Factory Services in Program.cs

In a minimal API setup (for .NET 6 and higher), here’s how you can initialize and register factory services:

var builder = WebApplication.CreateBuilder(args);

// Initialize the assembly with all patterns
AnnotationDesignPatternRegistrar.Initialize(Assembly.GetExecutingAssembly());

// Register all factory pattern services
AnnotationDesignPatternRegistrar.AddFactoryPatternServices(builder.Services);

var app = builder.Build();

// Add your middlewares and endpoints here

app.Run();

This will ensure that all factory services marked with [FactoryPattern] are properly registered in the DI container.

Example: Registering Factory Services in Startup.cs

If you are using a traditional Startup.cs class (for example, in an ASP.NET Core MVC app), here's how to register factory services:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Initialize the assembly with all patterns
        AnnotationDesignPatternRegistrar.Initialize(Assembly.GetExecutingAssembly());

        // Register all factory pattern services
        services.AddFactoryPatternServices();
    }
}

Contributing

If you'd like to contribute to AnnotationServiceBuilder.Patterns, feel free to submit a pull request or open an issue on the GitHub repository.


License

This project is licensed under the MIT License - see the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 132 9/9/2024