GHM.Validator 2.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package GHM.Validator --version 2.1.2                
NuGet\Install-Package GHM.Validator -Version 2.1.2                
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="GHM.Validator" Version="2.1.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add GHM.Validator --version 2.1.2                
#r "nuget: GHM.Validator, 2.1.2"                
#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 GHM.Validator as a Cake Addin
#addin nuget:?package=GHM.Validator&version=2.1.2

// Install GHM.Validator as a Cake Tool
#tool nuget:?package=GHM.Validator&version=2.1.2                

<p align="center"> <img src="logo.png" alt="logo" width="200px"/> </p>

<h1 align="center"> GHM.Validator </h1>

GHM.Validator is a nuget package aims to validate data.

Install Package

.NET CLI

dotnet add package GHM.Validator

Package Manager

NuGet\Install-Package GHM.Validator

IServiceCollectionExtensions

To add transient interface IValidate to implementate Validate or IThrower to implementate Thrower , call extension method to your serviceCollection.

using GHM.Validator.Extensions;

var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
service.AddGhmValidator();

If you want to set a default exception for IThrower, pass a Func<string, Exception> as a parameter to the AddGhmValidator method.

using GHM.Validator.Extensions;

var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
service.AddGhmValidator((message) => new TestException(message));

Example

To validate request data

using GHM.Validator;

public Validation[] ValidateCreateUserRequest(CreateUserRequest request)
{
    IValidate validate;

    return new Validation[]
    {
        validate.IfNotNull(request.Name,"Name must not be null"),
        validate.IfNotZero(request.Age,"Age must not be 0")
    };
}

Throw Exception from validation if it's invalid.

using GHM.Validator;

public Validation[] ValidateCreateUserRequest(CreateUserRequest request)
{
    IValidate validate;

    var list = new ValidationList
    {
        validate.IfNotNull(request.Name,"Name must not be null"),
        validate.IfNotZero(request.Age,"Age must not be 0")
    };

    list.ThrowErrorsWithMessage(" | ") //throw new ValidationException("Name must not be null | Age must not be 0").
    return list;
}

To throw if request data is invalid

using GHM.Validator;

public bool ValidateCreateUserRequest(CreateUserRequest request)
{
    IThrower thrower;

    thrower.IfNull(request.Name,"Name must not be null");// if null, throw ArgumentException.
    thrower.IfZero(request.Age,"Age must not be 0"); // if zero, throw ArgumentException.

    return true;
}

Setting a Exception.

using GHM.Validator;
public bool ValidateCreateUserRequest(CreateUserRequest request)
{
    IThrower thrower;
    thrower.SetException((message) => new TestException(message))

    thrower.IfNull(request.Name,"Name must not be null");
    thrower.IfZero(request.Age,"Age must not be 0");

    return true;
}

Classes

Validation

Validation is a object with properties(Message, IsValid).

using GHM.Validator;

var validationSuccess = Validation.Success("Successful message");

validationSuccess.Message; // "Successful message"
validationSuccess.IsValid; // true

var validationError = Validation.Error("Error message");

validationError.Message; // "Error message"
validationError.IsValid; // false

Interfaces

IValidate

You can use it to return a validation result.


public interface IValidate
{
    Validation IfNotDefault<T>(T obj, string message);
    Validation IfNotNull(object? obj, string message);
    Validation IfNull(object? obj, string message);
    Validation IfEqual(object obj, object objToComapere, string message);
    Validation IfNotZero(int number, string message);
    Validation IfNotZero(decimal number, string message);
    Validation IfGreaterOrEqual(int number, int numberToCompare, string message);
    Validation IfGreater(int number, int numberToCompare, string message);
    Validation IfGreaterOrEqual(decimal number, decimal numberToCompare, string message);
    Validation IfGreater(decimal number, decimal numberToCompare, string message);
    Validation IfNotEmpty(string text, string message);
    Validation IfParseToLong(string text, string message);
    Validation IfNotEmpty<T>(IEnumerable<T> list, string message);
    Validation IfOlder(DateTime date, DateTime dateToCompare, string message);
    Validation IfOlderOrEqual(DateTime date, DateTime dateToCompare, string message);
}

IThrower

You can use it to throw exception.

public interface IThrower
{
    bool IfDefault<T>(T obj, string message);
    bool IfNotNull(object? obj, string message);
    bool IfNull(object? obj, string message);
    bool IfNotEqual(object obj, object objToComapere, string message);
    bool IfZero(int number, string message);
    bool IfZero(decimal number, string message);
    bool IfGreaterOrEqual(int number, int numberToCompare, string message);
    bool IfGreater(int number, int numberToCompare, string message);
    bool IfGreaterOrEqual(decimal number, decimal numberToCompare, string message);
    bool IfGreater(decimal number, decimal numberToCompare, string message);
    bool IfEmpty(string text, string message);
    bool IfNotParseToLong(string text, string message);
    bool IfEmpty<T>(IEnumerable<T> list, string message);
    bool IfOlder(DateTime date, DateTime dateToCompare, string message);
    bool IfOlderOrEqual(DateTime date, DateTime dateToCompare, string message);
}

Star

if you enjoy, don't forget the ⭐ and install the package 😊.

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
5.0.0 106 8/7/2024
4.0.0 82 8/2/2024
3.5.0 110 6/1/2024
3.4.2 123 2/26/2024
3.4.1 125 2/24/2024
3.3.1 121 2/14/2024
3.2.1 117 2/6/2024
3.2.0 109 2/5/2024
3.1.0 109 2/2/2024
2.1.3 144 1/12/2024
2.1.2 115 1/12/2024
2.1.1 113 1/12/2024
2.1.0 110 1/12/2024
2.0.0 203 11/15/2023
1.0.0 137 10/7/2023