Tiny guard library for fluent precondition assertion. Current it is implemented for use with .net standard / core. Maybe a support for TypeScript and Java may be added.
You can follow my assumptions on this topic on my blog post.
Feel free to fork !
Offers a fluent way for making preconditions in a guard style. The idea is to have preconditions always in the same syntax and have less code.
Preconditions.For(DomainObjectId,nameof(DomainObjectId)).NotNull();Preconditions.For(()=>DomainObjectId).NotNull();Multiple checks
Preconditions.For(DomainObjectId,nameof(DomainObjectId)).NotNull().MinLength(3);In .net you can annotate your dtos with attributes from System.ComponentModel.DataAnnotations
These classes can look like this:
publicclassMyValueObject{[Required][MinLength(2)]publicstringText{get;set;}[Range(1,20)]publicintValue{get;set;}}FluentGuard offers the ability to validate that all defined conditions are met
Preconditions.For(()=>myDto).ValidateModel();You can also pass a custom message which will be used for the exceprion message.
Preconditions.For(DomainObjectId,nameof(DomainObjectId)).NotNull(message:"DomainObject has to be not null");When you want to add a new validation rule without extending this repository you can just create ExtensionMethods for the given Validation rule. See for example the StringValidationExtensions
publicstaticValidationRule<string>MinLength(thisValidationRule<string>rule,intlength){if(string.IsNullOrWhiteSpace(rule.Value)||rule.Value.Length<length){thrownewArgumentOutOfRangeException(rule.Name,rule.Value.Length,$"The value should be at least {length} characters long!");}returnrule;}- Implement TypeScript
#Nuget Package https://www.nuget.org/packages/FluentGuard