Pitasoft.Validation.DependencyInjectionExtensions 1.0.1

dotnet add package Pitasoft.Validation.DependencyInjectionExtensions --version 1.0.1
                    
NuGet\Install-Package Pitasoft.Validation.DependencyInjectionExtensions -Version 1.0.1
                    
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="Pitasoft.Validation.DependencyInjectionExtensions" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Pitasoft.Validation.DependencyInjectionExtensions" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Pitasoft.Validation.DependencyInjectionExtensions" />
                    
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 Pitasoft.Validation.DependencyInjectionExtensions --version 1.0.1
                    
#r "nuget: Pitasoft.Validation.DependencyInjectionExtensions, 1.0.1"
                    
#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 Pitasoft.Validation.DependencyInjectionExtensions@1.0.1
                    
#: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=Pitasoft.Validation.DependencyInjectionExtensions&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Pitasoft.Validation.DependencyInjectionExtensions&version=1.0.1
                    
Install as a Cake Tool

Pitasoft.Validation.DependencyInjectionExtensions

Build NuGet NuGet Downloads .NET Pitasoft.Validation Microsoft.Extensions.DependencyInjection.Abstractions License: MIT

English | Castellano

English

Register validators and checkers from Pitasoft.Validation in Microsoft.Extensions.DependencyInjection.

Installation

dotnet add package Pitasoft.Validation.DependencyInjectionExtensions

What This Package Adds

  • Register a validator with AddValidator<T, TValidator>()
  • Register an async validator with AddValidatorAsync<T, TValidator>()
  • Register a checker with AddChecker<T, TChecker>()
  • Register an async checker with AddCheckerAsync<T, TChecker>()
  • Scan one or more assemblies with AddValidators(...) and AddCheckers(...)

Quick Start

using Microsoft.Extensions.DependencyInjection;
using Pitasoft.Validation;
using Pitasoft.Validation.DependencyInjectionExtensions;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddValidator<User, UserValidator>();
builder.Services.AddChecker<User, UniqueEmailChecker>();

Then consume the services as usual:

public sealed class UserService(IValidator<User> validator)
{
    public void Save(User user)
    {
        var errors = validator.ValidateObject(user);

        if (errors is not null)
        {
            // handle validation errors
        }
    }
}

Register A Validator

builder.Services.AddValidator<User, UserValidator>();

With a custom lifetime:

builder.Services.AddValidator<User, UserValidator>(ServiceLifetime.Singleton);

Register An Async Validator

builder.Services.AddValidatorAsync<User, UserAsyncValidator>();

This lets you resolve either interface:

var validator = serviceProvider.GetRequiredService<IValidator<User>>();
var asyncValidator = serviceProvider.GetRequiredService<IValidatorAsync<User>>();

Register A Checker

builder.Services.AddChecker<User, UniqueEmailChecker>();

Multiple checkers for the same type are supported:

builder.Services.AddChecker<User, UniqueEmailChecker>();
builder.Services.AddChecker<User, ActiveAccountChecker>();

var checkers = serviceProvider.GetServices<IChecker<User>>();

Register An Async Checker

builder.Services.AddCheckerAsync<User, UniqueEmailCheckerAsync>();

Scan Assemblies

Register all validators from an assembly:

builder.Services.AddValidators(typeof(UserValidator).Assembly);

Register all checkers from an assembly:

builder.Services.AddCheckers(typeof(UniqueEmailChecker).Assembly);

Use a custom lifetime:

builder.Services.AddValidators(
    ServiceLifetime.Transient,
    typeof(UserValidator).Assembly);

builder.Services.AddCheckers(
    ServiceLifetime.Transient,
    typeof(UniqueEmailChecker).Assembly);

Scan everything at once:

var assembly = typeof(UserValidator).Assembly;

builder.Services
    .AddValidators(assembly)
    .AddCheckers(assembly);

Typical ASP.NET Core Setup

using Pitasoft.Validation.DependencyInjectionExtensions;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddValidators(typeof(UserValidator).Assembly);
builder.Services.AddCheckers(typeof(UserValidator).Assembly);

var app = builder.Build();
app.Run();

More Technical Notes

Implementation details and maintenance notes are available in docs/IMPLEMENTATION.md.


Castellano

Registra validadores y checkers de Pitasoft.Validation en Microsoft.Extensions.DependencyInjection.

Instalación

dotnet add package Pitasoft.Validation.DependencyInjectionExtensions

Qué Añade Este Paquete

  • Registrar un validador con AddValidator<T, TValidator>()
  • Registrar un validador asíncrono con AddValidatorAsync<T, TValidator>()
  • Registrar un checker con AddChecker<T, TChecker>()
  • Registrar un checker asíncrono con AddCheckerAsync<T, TChecker>()
  • Escanear uno o varios ensamblados con AddValidators(...) y AddCheckers(...)

Inicio Rápido

using Microsoft.Extensions.DependencyInjection;
using Pitasoft.Validation;
using Pitasoft.Validation.DependencyInjectionExtensions;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddValidator<User, UserValidator>();
builder.Services.AddChecker<User, UniqueEmailChecker>();

Después puedes consumir los servicios con normalidad:

public sealed class UserService(IValidator<User> validator)
{
    public void Save(User user)
    {
        var errors = validator.ValidateObject(user);

        if (errors is not null)
        {
            // gestionar errores de validación
        }
    }
}

Registrar Un Validador

builder.Services.AddValidator<User, UserValidator>();

Con un tiempo de vida personalizado:

builder.Services.AddValidator<User, UserValidator>(ServiceLifetime.Singleton);

Registrar Un Validador Asíncrono

builder.Services.AddValidatorAsync<User, UserAsyncValidator>();

Esto permite resolver cualquiera de las dos interfaces:

var validator = serviceProvider.GetRequiredService<IValidator<User>>();
var asyncValidator = serviceProvider.GetRequiredService<IValidatorAsync<User>>();

Registrar Un Checker

builder.Services.AddChecker<User, UniqueEmailChecker>();

Se admiten varios checkers para el mismo tipo:

builder.Services.AddChecker<User, UniqueEmailChecker>();
builder.Services.AddChecker<User, ActiveAccountChecker>();

var checkers = serviceProvider.GetServices<IChecker<User>>();

Registrar Un Checker Asíncrono

builder.Services.AddCheckerAsync<User, UniqueEmailCheckerAsync>();

Escanear Ensamblados

Registrar todos los validadores de un ensamblado:

builder.Services.AddValidators(typeof(UserValidator).Assembly);

Registrar todos los checkers de un ensamblado:

builder.Services.AddCheckers(typeof(UniqueEmailChecker).Assembly);

Usar un tiempo de vida personalizado:

builder.Services.AddValidators(
    ServiceLifetime.Transient,
    typeof(UserValidator).Assembly);

builder.Services.AddCheckers(
    ServiceLifetime.Transient,
    typeof(UniqueEmailChecker).Assembly);

Escanear todo a la vez:

var assembly = typeof(UserValidator).Assembly;

builder.Services
    .AddValidators(assembly)
    .AddCheckers(assembly);

Configuración Típica En ASP.NET Core

using Pitasoft.Validation.DependencyInjectionExtensions;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddValidators(typeof(UserValidator).Assembly);
builder.Services.AddCheckers(typeof(UserValidator).Assembly);

var app = builder.Build();
app.Run();

Más Notas Técnicas

Los detalles de implementación y mantenimiento están en docs/IMPLEMENTATION.md.

Licencia

MIT. Consulta LICENSE.txt.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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 is compatible.  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 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. 
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.1 105 4/1/2026
0.0.1 108 4/1/2026