Swallow.Validation.ServiceCollection
3.1.0
See the version list below for details.
dotnet add package Swallow.Validation.ServiceCollection --version 3.1.0
NuGet\Install-Package Swallow.Validation.ServiceCollection -Version 3.1.0
<PackageReference Include="Swallow.Validation.ServiceCollection" Version="3.1.0" />
paket add Swallow.Validation.ServiceCollection --version 3.1.0
#r "nuget: Swallow.Validation.ServiceCollection, 3.1.0"
// Install Swallow.Validation.ServiceCollection as a Cake Addin #addin nuget:?package=Swallow.Validation.ServiceCollection&version=3.1.0 // Install Swallow.Validation.ServiceCollection as a Cake Tool #tool nuget:?package=Swallow.Validation.ServiceCollection&version=3.1.0
Swallow.Validation
Package | Version | Comment |
---|---|---|
Swallow.Validation.Core | Core validation library. Use this if you want to define all assertions and errors yourself. | |
Swallow.Validation | "Batteries included" version with a handful of assertions and errors. | |
Swallow.Validation.ServiceCollection | Extension for registering a ValidationContainer and its asserters in an IServiceCollection |
Swallow.Validation
is a lightweight, fluent-style validation library for C#. But what does that mean?
It means minimal dependencies (none, actually) and great developer experience. If you've seen
Fluent Assertions, you might find some similarities.
Standout features
Swallow.Validation
does not require a separate class to contain the validation logic - you can
just drop it right into your code without problems. This allows you to enforce invariants rather than
validate the state of entities; instead of constructing a person and checking whether it is correct,
you can make sure that no person created can ever be in an invalid state - without needing to remember
calling new PersonValidator().Validate(myPerson)
.
The library is also "natively extensible", meaning you can create custom validation rules that perfectly blend in together with the predefined validation rules and the fluent style. You can create rules matched for your problem domain and use your own ubiquitous language. With the fluent style of the library, you can formulate validation rules directly in your domain language.
Validator.Check()
.That(() => Country).IsValidIsoCode()
.That(() => DeliveryDate).IsAfter(DateTime.UtcNow)
.That(() => Items).IsNotNull().IsNotEmpty()
.ElseThrow()
Additionally, the validation errors are strongly typed. Instead of throwing around strings everywhere, you have meaningful errors containing properties to describe the problem in an exact manner. You also need not worry about wording your error messages when doing your validation. You can also easily test validation logic this way; instead of comparing strings, you can just check if the error is of the correct type. You can even localize the error messages if you'd like; that way, the validation errors can even be given directly to the user.
Getting started
To get started with the library, check out the validation 101 in the documentation.
If you wish to know more about the validations and what you can do with them, I suggest you just find out by digging through the code or just using the library to build some validations.
And if you feel like something is missing (or just plain broken), feel free to create an issue.
Licensing
Swallow.Validation
is licensed under the MIT license. That means you can do whatever you like with
it, as long as you give credit by including the library's license when distributing your software.
The logo (the swallow) is taken from www.freevector.com.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. 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. |
-
net5.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0.0)
- Swallow.Validation.Core (>= 3.1.0)
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 |
---|---|---|
8.0.0 | 65 | 11/25/2024 |
7.0.0 | 135 | 1/20/2024 |
6.0.1 | 210 | 7/2/2023 |
6.0.0 | 288 | 1/22/2023 |
5.0.1 | 357 | 11/13/2022 |
5.0.0 | 430 | 7/17/2022 |
4.2.0 | 444 | 6/20/2022 |
4.1.1 | 435 | 5/29/2022 |
4.1.0 | 465 | 2/13/2022 |
4.0.0 | 425 | 2/13/2022 |
3.1.0 | 360 | 6/5/2021 |
3.0.0 | 298 | 5/20/2021 |
2.0.0 | 423 | 3/27/2021 |
1.2.0 | 411 | 11/23/2020 |
1.1.0 | 559 | 7/25/2020 |
1.0.0 | 489 | 6/21/2020 |