Forma.Decorator
2.1.2
dotnet add package Forma.Decorator --version 2.1.2
NuGet\Install-Package Forma.Decorator -Version 2.1.2
<PackageReference Include="Forma.Decorator" Version="2.1.2" />
<PackageVersion Include="Forma.Decorator" Version="2.1.2" />
<PackageReference Include="Forma.Decorator" />
paket add Forma.Decorator --version 2.1.2
#r "nuget: Forma.Decorator, 2.1.2"
#:package Forma.Decorator@2.1.2
#addin nuget:?package=Forma.Decorator&version=2.1.2
#tool nuget:?package=Forma.Decorator&version=2.1.2
Forma
<div align="center"> <img src="assets/forma-icon.svg" alt="Forma Logo" width="200"> </div>
Forma is a lightweight and modular .NET library that provides abstractions and infrastructure for implementing common behavioral design patterns such as Mediator, Decorator, Pipeline, and more.
Build composable, decoupled, and maintainable application flows using clean architectural principles.
NuGet Packages
✨ Features
- ✅ Abstract and extensible interfaces (
IMediator,IRequestHandler,IPipelineBehavior,IDecorator, etc.) - ✅ Built-in support for request/response messaging (Mediator Pattern)
- ✅ Seamless integration with .NET Dependency Injection
- ✅ Auto-registration of handlers and behaviors via reflection
- ✅ Support for custom pipeline behaviors (e.g. logging, retry, caching)
- ✅ Zero dependencies in the core package
📦 Installation
Available on NuGet.org:
# Core components
dotnet add package Forma.Core
dotnet add package Forma.Mediator
dotnet add package Forma.Decorator
# Additional components
dotnet add package Forma.Chains
dotnet add package Forma.PubSub.InMemory
Benchmark
| Method | Categories | Mean | Error | StdDev | Median | Rank |
|---|---|---|---|---|---|---|
| Forma_RequestWithResponse | RequestWithResponse | 334.8 ns | 6.23 ns | 10.92 ns | 332.0 ns | 1 |
| MediatR_RequestWithResponse | RequestWithResponse | 492.4 ns | 9.54 ns | 10.98 ns | 491.9 ns | 2 |
| Forma_SendAsync_object | SendAsObject | 335.7 ns | 6.46 ns | 8.63 ns | 335.2 ns | 1 |
| MediatR_Send_object | SendAsObject | 452.4 ns | 9.31 ns | 26.25 ns | 441.3 ns | 2 |
| Forma_SimpleRequest | SimpleRequest | 283.0 ns | 5.50 ns | 5.40 ns | 282.7 ns | 1 |
| MediatR_SimpleRequest | SimpleRequest | 412.1 ns | 7.47 ns | 10.71 ns | 408.1 ns | 2 |
🛠 Development
Requirements
- .NET 9.0 SDK or higher
- Visual Studio 2025 or other .NET-compatible IDE
Useful Commands
# Build the project
dotnet build
# Run tests
dotnet test
# Run benchmarks
dotnet run -c Release --project src/Forma.Benchmarks/Forma.Benchmarks.csproj
📋 Documentation
Getting Started
- Installation - How to install Forma packages
- Features - Overview of Forma capabilities
- Development - Local development setup
Release & Development
- Release Guide - Comprehensive guide for releasing packages
- Testing GitHub Actions - How to test workflows locally
- Project vs NuGet References - Development vs CI/CD build configuration
Technical Documentation
- Workflow Documentation - GitHub Actions workflows overview
- Logo Assets - Forma logo and branding guidelines
Quick References
- See the Release Guide Quick Reference for common commands
🚀 Release Process
Forma uses a hybrid approach for releasing its NuGet packages:
- Core Releases (
Forma.Core,Forma.Mediator,Forma.Decorator): Released together with the same version - Component Releases (
Forma.Chains,Forma.PubSub.InMemory): Released independently
For more information on the release process, see the Release Guide.
👥 Contributing
Contributions are welcome! If you'd like to contribute to Forma:
- Fork the repository
- Create a branch for your feature (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Before contributing, please review the development documentation in the docs/ folder.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Forma.Core (>= 1.1.12)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
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 |
|---|---|---|
| 2.1.2 | 33 | 4/2/2026 |
| 2.0.1 | 80 | 3/20/2026 |
| 1.1.12 | 82 | 3/20/2026 |
| 1.1.2 | 493 | 7/21/2025 |
| 1.0.10-g74bc3c401b | 291 | 7/20/2025 |
| 1.0.0-preview-0004 | 459 | 7/21/2025 |
| 1.0.0-preview-0003 | 555 | 7/20/2025 |
| 1.0.0-preview-0002 | 378 | 7/20/2025 |