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
<PackageReference Include="Pitasoft.Validation.DependencyInjectionExtensions" Version="1.0.1" />
<PackageVersion Include="Pitasoft.Validation.DependencyInjectionExtensions" Version="1.0.1" />
<PackageReference Include="Pitasoft.Validation.DependencyInjectionExtensions" />
paket add Pitasoft.Validation.DependencyInjectionExtensions --version 1.0.1
#r "nuget: Pitasoft.Validation.DependencyInjectionExtensions, 1.0.1"
#:package Pitasoft.Validation.DependencyInjectionExtensions@1.0.1
#addin nuget:?package=Pitasoft.Validation.DependencyInjectionExtensions&version=1.0.1
#tool nuget:?package=Pitasoft.Validation.DependencyInjectionExtensions&version=1.0.1
Pitasoft.Validation.DependencyInjectionExtensions
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(...)andAddCheckers(...)
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(...)yAddCheckers(...)
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 | Versions 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. |
-
net10.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Pitasoft.Validation (>= 6.0.4)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Pitasoft.Validation (>= 6.0.4)
-
net9.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Pitasoft.Validation (>= 6.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.