ExpressValidator.Extensions.DependencyInjection
0.3.0
dotnet add package ExpressValidator.Extensions.DependencyInjection --version 0.3.0
NuGet\Install-Package ExpressValidator.Extensions.DependencyInjection -Version 0.3.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="ExpressValidator.Extensions.DependencyInjection" Version="0.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ExpressValidator.Extensions.DependencyInjection --version 0.3.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ExpressValidator.Extensions.DependencyInjection, 0.3.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.
// Install ExpressValidator.Extensions.DependencyInjection as a Cake Addin #addin nuget:?package=ExpressValidator.Extensions.DependencyInjection&version=0.3.0 // Install ExpressValidator.Extensions.DependencyInjection as a Cake Tool #tool nuget:?package=ExpressValidator.Extensions.DependencyInjection&version=0.3.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
The ExpressValidator.Extensions.DependencyInjection
package extends ExpressValidator
to provide integration with Microsoft Dependency Injection.
Key Features
- Configures and adds the
IExpressValidator<ObjToValidate>
interface in Microsoft's Dependency Injection (DI) container. - Additionally, the
IExpressValidatorBuilder<ObjToValidate, ValidationParametersOptions>
interface can be configured and registered to update the validator parameters when theValidationParametersOptions
change. - Ability to dynamically update the validator parameters from options bound to the configuration section without restarting the application by configuring the
IExpressValidatorWithReload<ObjToValidate>
interface.
Usage
using ExpressValidator;
using ExpressValidator.Extensions.DependencyInjection;
using FluentValidation;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddExpressValidator<ObjToValidate>(b =>
b.AddProperty(o => o.I)
.WithValidation(o => o.GreaterThan(5)
.WithMessage("Must be greater than 5!")));
builder.Services.AddExpressValidatorBuilder<ObjToValidate, ValidationParametersOptions>
(b => b.AddProperty(o => o.I)
.WithValidation((to, rbo) => rbo.GreaterThan(to.IGreaterThanValue)
.WithMessage($"Must be greater than {to.IGreaterThanValue}!")));
builder.Services.AddExpressValidatorWithReload<ObjToValidate, ValidationParametersOptions>(b =>
b.AddProperty(o => o.I)
.WithValidation((to, rbo) => rbo.GreaterThan(to.IGreaterThanValue)
.WithMessage($"Must be greater than {to.IGreaterThanValue}!")),
//Configuration section path
"ValidationParameters");
builder.Services.AddTransient<ISomeServiceThatUseIExpressValidator, SomeServiceThatUseIExpressValidator>();
var app = builder.Build();
...
interface ISomeServiceThatUseIExpressValidator
{
void ValidateByValidator(ObjToValidate objToValidate);
void ValidateByBuilder(ObjToValidate objToValidate);
void ValidateByValidatorWithReload(ObjToValidate objToValidate);
}
class SomeServiceThatUseIExpressValidator : ISomeServiceThatUseIExpressValidator
{
private readonly IExpressValidator<ObjToValidate> _expressValidator;
private readonly IExpressValidatorBuilder<ObjToValidate, ValidationParametersOptions> _expressValidatorBuilder;
private readonly IExpressValidatorWithReload<ObjToValidate> _expressValidatorWithReload;
private readonly ValidationParametersOptions _validateOptions;
public SomeServiceThatUseIExpressValidator(
IExpressValidator<ObjToValidate> expressValidator,
IExpressValidatorBuilder<ObjToValidate, ValidationParametersOptions> expressValidatorBuilder,
IExpressValidatorWithReload<ObjToValidate> expressValidatorWithReload
IOptions<ValidationParametersOptions> validateOptions)
{
_expressValidator = expressValidator;
_expressValidatorBuilder = expressValidatorBuilder;
_expressValidatorWithReload = expressValidatorWithReload;
_validateOptions = validateOptions.Value;
}
public void ValidateByValidator(ObjToValidate objToValidate)
{
var vr = _expressValidator.Validate(objToValidate);
if(vr.IsValid)
{
...
}
}
public void ValidateByBuilder(ObjToValidate objToValidate)
{
ChangeOptions();
var vr = _expressValidatorBuilder
.Build(_validateOptions)
.Validate(objToValidate);
if(vr.IsValid)
{
...
}
}
//Change the options in the configuration section path named "ValidationParameters"
//and use this method to revalidate the object without restarting the application.
public void ValidateByValidatorWithReload(ObjToValidate objToValidate)
{
var vr = _expressValidatorWithReload.Validate(objToValidate);
if(vr.IsValid)
{
...
}
}
private void ChangeOptions()
{
_validateOptions.IGreaterThanValue = ...;
}
}
class ObjToValidate
{
public int I { get; set; }
}
class ValidationParametersOptions
{
public int IGreaterThanValue { get; set; }
}
In the appsettings.json
{
...
"ValidationParameters": {
"IGreaterThanValue": 5
}
...
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- ExpressValidator (>= 0.1.0)
- Microsoft.Extensions.DependencyInjection (>= 9.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.