From 0a1397d41038438dcba33ba605d4d9b2f1ea4a04 Mon Sep 17 00:00:00 2001 From: kolan72 Date: Thu, 3 Jul 2025 15:37:12 +0300 Subject: [PATCH 1/5] Update CHANGELOG.md. --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5563acf..6dc581c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.10.0 + +- Introduced the `QuickValidator.ValidateAsync(T, Action>, string, Action, CancellationToken)` extension method. +- Introduced the `QuickValidator.ValidateAsync(T, Action>, PropertyNameMode, Action, CancellationToken)` extension method. +- Edit 'Quick Validation' README Chapter. +- Edit 'Quick Validation' NuGet README Chapter. + + ## 0.9.0 - Added quick validation support via `QuickValidator` and its `Validate` overloads. From 9cd86638228ed5876420c88e40610f5bdcbf2dc7 Mon Sep 17 00:00:00 2001 From: kolan72 Date: Thu, 3 Jul 2025 15:44:15 +0300 Subject: [PATCH 2/5] Package 0.10.0 version. --- src/ExpressValidator/ExpressValidator.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ExpressValidator/ExpressValidator.csproj b/src/ExpressValidator/ExpressValidator.csproj index 2e9f057..1fba684 100644 --- a/src/ExpressValidator/ExpressValidator.csproj +++ b/src/ExpressValidator/ExpressValidator.csproj @@ -3,7 +3,7 @@ netstandard2.0 true - 0.9.0 + 0.10.0 true Andrey Kolesnichenko ExpressValidator is a library that provides the ability to validate objects using the FluentValidation library, but without object inheritance from `AbstractValidator`. @@ -15,7 +15,7 @@ ExpressValidator.png NuGet.md - 0.9.0.0 + 0.10.0.0 0.0.0.0 From 0fed653540dd4280ecd4cf94ef74c98da633a937 Mon Sep 17 00:00:00 2001 From: kolan72 Date: Fri, 18 Jul 2025 16:58:50 +0300 Subject: [PATCH 3/5] Update Microsoft nuget packages. --- ...ator.Extensions.DependencyInjection.csproj | 4 +- ...xtensions.DependencyInjection.Tests.csproj | 72 +++++++++---------- .../packages.config | 36 +++++----- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj b/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj index 83550d7..5a94f17 100644 --- a/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj +++ b/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj @@ -32,8 +32,8 @@ - - + + diff --git a/tests/ExpressValidator.Extensions.DependencyInjection.Tests/ExpressValidator.Extensions.DependencyInjection.Tests.csproj b/tests/ExpressValidator.Extensions.DependencyInjection.Tests/ExpressValidator.Extensions.DependencyInjection.Tests.csproj index 262cbc7..182176d 100644 --- a/tests/ExpressValidator.Extensions.DependencyInjection.Tests/ExpressValidator.Extensions.DependencyInjection.Tests.csproj +++ b/tests/ExpressValidator.Extensions.DependencyInjection.Tests/ExpressValidator.Extensions.DependencyInjection.Tests.csproj @@ -45,50 +45,50 @@ ..\..\packages\FluentValidation.11.11.0\lib\netstandard2.0\FluentValidation.dll - - ..\..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.6\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll + + ..\..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.7\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll - - ..\..\packages\Microsoft.Extensions.Configuration.9.0.6\lib\net462\Microsoft.Extensions.Configuration.dll + + ..\..\packages\Microsoft.Extensions.Configuration.9.0.7\lib\net462\Microsoft.Extensions.Configuration.dll - - ..\..\packages\Microsoft.Extensions.Configuration.Abstractions.9.0.6\lib\net462\Microsoft.Extensions.Configuration.Abstractions.dll + + ..\..\packages\Microsoft.Extensions.Configuration.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.Configuration.Abstractions.dll - - ..\..\packages\Microsoft.Extensions.Configuration.Binder.9.0.6\lib\net462\Microsoft.Extensions.Configuration.Binder.dll + + ..\..\packages\Microsoft.Extensions.Configuration.Binder.9.0.7\lib\net462\Microsoft.Extensions.Configuration.Binder.dll - - ..\..\packages\Microsoft.Extensions.Configuration.EnvironmentVariables.9.0.6\lib\net462\Microsoft.Extensions.Configuration.EnvironmentVariables.dll + + ..\..\packages\Microsoft.Extensions.Configuration.EnvironmentVariables.9.0.7\lib\net462\Microsoft.Extensions.Configuration.EnvironmentVariables.dll - - ..\..\packages\Microsoft.Extensions.Configuration.FileExtensions.9.0.6\lib\net462\Microsoft.Extensions.Configuration.FileExtensions.dll + + ..\..\packages\Microsoft.Extensions.Configuration.FileExtensions.9.0.7\lib\net462\Microsoft.Extensions.Configuration.FileExtensions.dll - - ..\..\packages\Microsoft.Extensions.Configuration.Json.9.0.6\lib\net462\Microsoft.Extensions.Configuration.Json.dll + + ..\..\packages\Microsoft.Extensions.Configuration.Json.9.0.7\lib\net462\Microsoft.Extensions.Configuration.Json.dll - - ..\..\packages\Microsoft.Extensions.DependencyInjection.9.0.6\lib\net462\Microsoft.Extensions.DependencyInjection.dll + + ..\..\packages\Microsoft.Extensions.DependencyInjection.9.0.7\lib\net462\Microsoft.Extensions.DependencyInjection.dll - - ..\..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.9.0.6\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll + + ..\..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll - - ..\..\packages\Microsoft.Extensions.FileProviders.Abstractions.9.0.6\lib\net462\Microsoft.Extensions.FileProviders.Abstractions.dll + + ..\..\packages\Microsoft.Extensions.FileProviders.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.FileProviders.Abstractions.dll - - ..\..\packages\Microsoft.Extensions.FileProviders.Physical.9.0.6\lib\net462\Microsoft.Extensions.FileProviders.Physical.dll + + ..\..\packages\Microsoft.Extensions.FileProviders.Physical.9.0.7\lib\net462\Microsoft.Extensions.FileProviders.Physical.dll - - ..\..\packages\Microsoft.Extensions.FileSystemGlobbing.9.0.6\lib\net462\Microsoft.Extensions.FileSystemGlobbing.dll + + ..\..\packages\Microsoft.Extensions.FileSystemGlobbing.9.0.7\lib\net462\Microsoft.Extensions.FileSystemGlobbing.dll - - ..\..\packages\Microsoft.Extensions.Options.9.0.6\lib\net462\Microsoft.Extensions.Options.dll + + ..\..\packages\Microsoft.Extensions.Options.9.0.7\lib\net462\Microsoft.Extensions.Options.dll - - ..\..\packages\Microsoft.Extensions.Options.ConfigurationExtensions.9.0.6\lib\net462\Microsoft.Extensions.Options.ConfigurationExtensions.dll + + ..\..\packages\Microsoft.Extensions.Options.ConfigurationExtensions.9.0.7\lib\net462\Microsoft.Extensions.Options.ConfigurationExtensions.dll - - ..\..\packages\Microsoft.Extensions.Primitives.9.0.6\lib\net462\Microsoft.Extensions.Primitives.dll + + ..\..\packages\Microsoft.Extensions.Primitives.9.0.7\lib\net462\Microsoft.Extensions.Primitives.dll ..\..\packages\NUnit.4.3.2\lib\net462\nunit.framework.dll @@ -102,8 +102,8 @@ - - ..\..\packages\System.IO.Pipelines.9.0.6\lib\net462\System.IO.Pipelines.dll + + ..\..\packages\System.IO.Pipelines.9.0.7\lib\net462\System.IO.Pipelines.dll ..\..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll @@ -115,11 +115,11 @@ ..\..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll - - ..\..\packages\System.Text.Encodings.Web.9.0.6\lib\net462\System.Text.Encodings.Web.dll + + ..\..\packages\System.Text.Encodings.Web.9.0.7\lib\net462\System.Text.Encodings.Web.dll - - ..\..\packages\System.Text.Json.9.0.6\lib\net462\System.Text.Json.dll + + ..\..\packages\System.Text.Json.9.0.7\lib\net462\System.Text.Json.dll ..\..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll diff --git a/tests/ExpressValidator.Extensions.DependencyInjection.Tests/packages.config b/tests/ExpressValidator.Extensions.DependencyInjection.Tests/packages.config index 2c7663e..f897ada 100644 --- a/tests/ExpressValidator.Extensions.DependencyInjection.Tests/packages.config +++ b/tests/ExpressValidator.Extensions.DependencyInjection.Tests/packages.config @@ -2,30 +2,30 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - + + \ No newline at end of file From bc4c90570d2151612cdfd4a8a31044a355e40e05 Mon Sep 17 00:00:00 2001 From: kolan72 Date: Fri, 25 Jul 2025 14:20:42 +0300 Subject: [PATCH 4/5] Package 0.3.9 version and update CHANGELOG.md. --- .../CHANGELOG.md | 7 +++++++ .../ExpressValidator.Extensions.DependencyInjection.csproj | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ExpressValidator.Extensions.DependencyInjection/CHANGELOG.md b/src/ExpressValidator.Extensions.DependencyInjection/CHANGELOG.md index e047ff9..9f9bb74 100644 --- a/src/ExpressValidator.Extensions.DependencyInjection/CHANGELOG.md +++ b/src/ExpressValidator.Extensions.DependencyInjection/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.3.9 + +- Update ExpressValidator nuget package. +- Update Microsoft nuget packages. +- Update Microsoft NuGet packages for ExpressValidator.Extensions.DependencyInjection.Tests. + + ## 0.3.7 - Update ExpressValidator nuget package. diff --git a/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj b/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj index 5a94f17..f3ae59b 100644 --- a/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj +++ b/src/ExpressValidator.Extensions.DependencyInjection/ExpressValidator.Extensions.DependencyInjection.csproj @@ -3,7 +3,7 @@ netstandard2.0 true - 0.3.7 + 0.3.9 true Andrey Kolesnichenko MIT @@ -15,7 +15,7 @@ FluentValidation Validation DependencyInjection The ExpressValidator.Extensions.DependencyInjection package extends ExpressValidator to provide integration with Microsoft Dependency Injection. Copyright 2024 Andrey Kolesnichenko - 0.3.7.0 + 0.3.9.0 From 0c4fb263810410b8643869776e9dc1b29afb9946 Mon Sep 17 00:00:00 2001 From: kolan72 Date: Wed, 27 Aug 2025 15:09:23 +0300 Subject: [PATCH 5/5] Add 'Asynchronous Validation' README Chapter. --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index a034748..a0648cf 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,28 @@ if(!result.IsValid) } ``` +## 💡 Asynchronous Validation + +If you want to add asynchronous FluentValidation rules such as `MustAsync` or `CustomAsync`, the recommended approach is to use the `WithAsyncValidation` method: +```csharp +//Checking if a user ID is already in use using an external web API: +var result = await new ExpressValidatorBuilder() + .AddProperty(o => o.CustomerId) + .WithAsyncValidation(o => o.MustAsync(async (id, cancellation) => + + !await apiClient.IdExistsAsync(id, cancellation))) + + .Build() + .ValidateAsync(customer); +``` +Once you've used this method at least once within the `ExpressValidatorBuilder`, you must call the `ValidateAsync` method on the resulting `ExpressValidator`. + +Calling `Validate` instead will result in an `InvalidOperationException`. + +Note: You can still use the `WithValidation` method for asynchronous rules, but in that case, ensure you call only `ValidateAsync`; otherwise, FluentValidation will throw an `AsyncValidatorInvokedSynchronouslyException`. + +As with FluentValidation itself, you can safely call `ValidateAsync` when both synchronous and asynchronous rules are present. + ## ⚙️ Modifying FluentValidation Validator Parameters Using Options To dynamically change the parameters of the `FluentValidation` validators: