CSharpFunctionalExtensions.Errors 0.1.0-alpha.10

This is a prerelease version of CSharpFunctionalExtensions.Errors.
dotnet add package CSharpFunctionalExtensions.Errors --version 0.1.0-alpha.10
NuGet\Install-Package CSharpFunctionalExtensions.Errors -Version 0.1.0-alpha.10
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="CSharpFunctionalExtensions.Errors" Version="0.1.0-alpha.10" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CSharpFunctionalExtensions.Errors --version 0.1.0-alpha.10
#r "nuget: CSharpFunctionalExtensions.Errors, 0.1.0-alpha.10"
#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 CSharpFunctionalExtensions.Errors as a Cake Addin
#addin nuget:?package=CSharpFunctionalExtensions.Errors&version=0.1.0-alpha.10&prerelease

// Install CSharpFunctionalExtensions.Errors as a Cake Tool
#tool nuget:?package=CSharpFunctionalExtensions.Errors&version=0.1.0-alpha.10&prerelease

CSharpFunctionalExtensions.Errors

This library has the following errors classes

ErrorList

ErrorList To help return a collection of errors.

It can be used to combine multiple errors using the Combine method.

Example:

    var stringResultSuccess = Result.Success<string, ErrorList>("one");
    var emailResultFailure = EmailAddress.Create("Bad Email");
    var result = Result.Combine<ErrorList>(stringResultSuccess, emailResultFailure);
Common Error classes

The following error classes are available.

  • Conflict
  • NotFound
  • Unauthorized
  • Unexpected
  • Validation
Fluent Validation Extension

The following extension will convert Fluent Validation errors to ErrorList with Error.Validation errors.

public static Result<T, ErrorList> ToResult<T>(this FluentValidation.Results.ValidationResult validationResult, T value)
   

Example: Look at s_validator.Validate(user).ToResult(user); below.

public class User : Entity<Guid>
{
    public string FirstName { get; }
    public string LastName { get; }
    public string Email { get; }
    public string Password { get; }

    public static Result<User, ErrorList> Create(string firstName, string lastName, string email, string password)
    {
        var user = new User(firstName, lastName, email, password);
        return s_validator.Validate(user).ToResult(user);
    }


    private User(string firstName, string lastName, string email, string password)
    {
        FirstName = firstName;
        LastName = lastName;
        Email = email;
        Password = password;
    }

    static readonly InlineValidator<User> s_validator = new()
    {
        v => v.RuleFor(x => x.FirstName).NotEmpty(),
        v => v.RuleFor(x => x.LastName).NotEmpty(),
        v => v.RuleFor(x => x.Email).NotEmpty().EmailAddress(),
        v => v.RuleFor(x => x.Password).NotEmpty()
    };
}
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 (1)

Showing the top 1 NuGet packages that depend on CSharpFunctionalExtensions.Errors:

Package Downloads
CSharpFunctionalExtensions.Asp

ASP .net base controller to translated errors to http errors.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.0-alpha.10 109 2/2/2023
0.1.0-alpha.5 89 1/31/2023
0.0.1-alpha 91 12/9/2022
0.0.0.1-alpha 90 11/14/2022