Pitasoft.Error 5.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Pitasoft.Error --version 5.1.1
                    
NuGet\Install-Package Pitasoft.Error -Version 5.1.1
                    
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="Pitasoft.Error" Version="5.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Pitasoft.Error" Version="5.1.1" />
                    
Directory.Packages.props
<PackageReference Include="Pitasoft.Error" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Pitasoft.Error --version 5.1.1
                    
#r "nuget: Pitasoft.Error, 5.1.1"
                    
#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.
#:package Pitasoft.Error@5.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Pitasoft.Error&version=5.1.1
                    
Install as a Cake Addin
#tool nuget:?package=Pitasoft.Error&version=5.1.1
                    
Install as a Cake Tool

Pitasoft.Error

NuGet version NuGet downloads Build Status License .NET Support

Pitasoft.Error is a class library designed to facilitate the handling and management of error collections in .NET applications. It allows grouping errors by property, handling change notifications, and serializing/deserializing error collections to/from JSON.

English | Español


English

Key Features

  • ErrorCollection: A robust collection for storing errors associated with property names.
  • High Performance: Optimized for low memory allocation and fast execution, especially in filtering and mass clearing operations.
  • INotifyDataErrorInfo Support: Fully implements INotifyDataErrorInfo for seamless integration with WPF, MAUI, and other data-binding frameworks.
  • Notifications: Support for events when the error collection changes.
  • JSON Serialization: Built-in extensions to convert error collections to JSON and vice versa.
  • Multi-target Support: Compatible with .NET 8.0, .NET 9.0, and .NET 10.0.

Installation

You can install this package via NuGet:

dotnet add package Pitasoft.Error

Basic Usage

Creating an Error Collection and Adding/Clearing Errors
using Pitasoft.Error;

var errors = new ErrorCollection();
errors.Add("Name", "The name is required.");
errors.Add("Email", "The email format is invalid.");

if (errors.AnyError())
{
    // Handle errors
}

// Clear errors for a specific property
errors.Clear("Name");

// Clear all errors
errors.ClearAll();

Note: The Remove and RemoveAll methods are now deprecated in favor of Clear and ClearAll to maintain naming consistency with standard .NET collections.

Using Static Creation Methods
var errors = ErrorCollection.Create("General", "An unexpected error has occurred.");
JSON Serialization
using Pitasoft.Error.Extensions;

string json = errors.ToJson();
Deserialization from JSON
string json = "{\"name\":[\"Error 1\"]}";
var errors = json.ToErrorCollection();
Event Notifications

You can subscribe to changes in the error collection:

var errors = new ErrorCollection();
errors.ErrorsChanged += (sender, e) => 
{
    Console.WriteLine($"Property '{e.PropertyName}' was updated. Action: {e.Action}");
};

errors.Add("Username", "Already exists.");
Exception Handling

Easily convert exceptions into error collections:

try 
{
    // Some code that throws
}
catch (Exception ex)
{
    var errors = ErrorCollection.Create(ex, deep: true);
    // All inner exceptions are now captured in the collection
}

License

This project is licensed under the terms specified in the License.txt file.

Benchmarks

The project is highly optimized for performance. Below is a comparison of typical operations between .NET 8.0 and .NET 10.0:

Method Mean Time (.NET 8.0) Mean Time (.NET 10.0) Allocated Memory
AnyError < 1 ns < 1 ns 0 B
AnyErrorProperty ~3.5 ns ~2.7 ns 0 B
GetProperties ~23.0 ns ~14.4 ns 96 B
AddError ~36.1 ns ~27.9 ns 376 B
GetErrors ~120.0 ns ~99.8 ns 376 B

The new version of .NET 10.0 shows a significant improvement in both execution time and memory allocation efficiency for several operations.

Author

Sebastián Martínez Pérez - Pitasoft, S.L.


Español

Pitasoft.Error es una biblioteca de clases diseñada para facilitar el manejo y la gestión de colecciones de errores en aplicaciones .NET. Permite agrupar errores por propiedad, manejar notificaciones de cambios y serializar/deserializar colecciones de errores a JSON.

Características principales

  • ErrorCollection: Una colección robusta para almacenar errores asociados a nombres de propiedades.
  • Alto Rendimiento: Optimizada para minimizar las asignaciones de memoria y maximizar la velocidad, especialmente en operaciones de filtrado y limpieza masiva.
  • Soporte INotifyDataErrorInfo: Implementa completamente INotifyDataErrorInfo para una integración fluida con WPF, MAUI y otros marcos de trabajo con enlace de datos.
  • Notificaciones: Soporte para eventos cuando la colección de errores cambia.
  • Serialización JSON: Extensiones integradas para convertir colecciones de errores a JSON y viceversa.
  • Soporte Multi-target: Compatible con .NET 8.0, .NET 9.0 y .NET 10.0.

Instalación

Puedes instalar este paquete a través de NuGet:

dotnet add package Pitasoft.Error

Uso básico

Crear una colección de errores, añadir y limpiar errores
using Pitasoft.Error;

var errors = new ErrorCollection();
errors.Add("Nombre", "El nombre es obligatorio.");
errors.Add("Email", "El formato del email no es válido.");

if (errors.AnyError())
{
    // Manejar errores
}

// Limpiar errores de una propiedad específica
errors.Clear("Nombre");

// Limpiar todos los errores
errors.ClearAll();

Nota: Los métodos Remove y RemoveAll han sido marcados como obsoletos en favor de Clear y ClearAll para mantener la consistencia con las colecciones estándar de .NET.

Uso de métodos estáticos de creación
var errors = ErrorCollection.Create("General", "Ha ocurrido un error inesperado.");
Serialización a JSON
using Pitasoft.Error.Extensions;

string json = errors.ToJson();
Deserialización desde JSON
string json = "{\"nombre\":[\"Error 1\"]}";
var errors = json.ToErrorCollection();
Notificaciones de Eventos

Puedes suscribirte a los cambios en la colección de errores:

var errors = new ErrorCollection();
errors.ErrorsChanged += (sender, e) => 
{
    Console.WriteLine($"La propiedad '{e.PropertyName}' ha sido actualizada. Acción: {e.Action}");
};

errors.Add("Usuario", "Ya existe.");
Manejo de Excepciones

Convierte fácilmente excepciones en colecciones de errores:

try 
{
    // Código que lanza una excepción
}
catch (Exception ex)
{
    var errors = ErrorCollection.Create(ex, deep: true);
    // Todas las excepciones internas se capturan ahora en la colección
}

Licencia

Este proyecto está bajo la licencia especificada en el archivo License.txt.

Benchmarks

El proyecto está altamente optimizado. A continuación se muestra una comparativa de operaciones típicas entre .NET 8.0 y .NET 10.0:

Método Tiempo Medio (.NET 8.0) Tiempo Medio (.NET 10.0) Memoria Asignada
AnyError < 1 ns < 1 ns 0 B
AnyErrorProperty ~3.5 ns ~2.7 ns 0 B
GetProperties ~23.0 ns ~14.4 ns 96 B
AddError ~36.1 ns ~27.9 ns 376 B
GetErrors ~120.0 ns ~99.8 ns 376 B

La nueva versión de .NET 10.0 muestra una mejora significativa tanto en tiempo de ejecución como en eficiencia de asignación de memoria para varias operaciones.

Autor

Sebastián Martínez Pérez - Pitasoft, S.L.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Pitasoft.Error:

Package Downloads
Pitasoft.Result

.NET library designed to standardize responses from REST services and internal application layers. It provides a robust set of classes to wrap data, status codes, and error collections, facilitating a unified communication contract between APIs, services, and clients.

Pitasoft.Validation

A flexible and high-performance C# validation library designed to validate objects using multiple strategies, including Data Annotations, custom rules, and a fluent API.

Pitasoft.Web

Librerias basicas de aplicaciones web

Pitasoft.AspNetCore

Librerias basicas de aplicaciones web

Pitasoft.Blazor.Validation

Blazor components for data validation in forms.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.3.14 698 3/23/2026
5.3.13 136 3/23/2026
5.3.12 119 3/23/2026
5.3.11 150 3/22/2026
5.3.10 123 3/22/2026
5.3.9 126 3/22/2026
5.3.8 199 3/20/2026
5.3.7 244 3/13/2026
5.3.6 201 3/10/2026
5.3.5 131 3/10/2026
5.3.4 127 3/10/2026
5.3.3 128 3/9/2026
5.3.2 329 3/2/2026
5.3.1 264 2/24/2026
5.2.2 197 2/23/2026
5.2.1 128 2/22/2026
5.1.1 136 2/17/2026
5.0.3 185 2/4/2026
5.0.2 197 1/26/2026
5.0.1 140 1/26/2026
Loading failed