AnnotationServiceBuilder.Patterns
1.0.0
dotnet add package AnnotationServiceBuilder.Patterns --version 1.0.0
NuGet\Install-Package AnnotationServiceBuilder.Patterns -Version 1.0.0
<PackageReference Include="AnnotationServiceBuilder.Patterns" Version="1.0.0" />
<PackageVersion Include="AnnotationServiceBuilder.Patterns" Version="1.0.0" />
<PackageReference Include="AnnotationServiceBuilder.Patterns" />
paket add AnnotationServiceBuilder.Patterns --version 1.0.0
#r "nuget: AnnotationServiceBuilder.Patterns, 1.0.0"
#:package AnnotationServiceBuilder.Patterns@1.0.0
#addin nuget:?package=AnnotationServiceBuilder.Patterns&version=1.0.0
#tool nuget:?package=AnnotationServiceBuilder.Patterns&version=1.0.0
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 beSingleton
orTransient
).
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 | Versions 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. |
-
net6.0
- Microsoft.Extensions.DependencyInjection (>= 8.0.0)
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 |