Easy.Tools.Result
1.0.1
See the version list below for details.
dotnet add package Easy.Tools.Result --version 1.0.1
NuGet\Install-Package Easy.Tools.Result -Version 1.0.1
<PackageReference Include="Easy.Tools.Result" Version="1.0.1" />
<PackageVersion Include="Easy.Tools.Result" Version="1.0.1" />
<PackageReference Include="Easy.Tools.Result" />
paket add Easy.Tools.Result --version 1.0.1
#r "nuget: Easy.Tools.Result, 1.0.1"
#:package Easy.Tools.Result@1.0.1
#addin nuget:?package=Easy.Tools.Result&version=1.0.1
#tool nuget:?package=Easy.Tools.Result&version=1.0.1
Easy.Tools.Result
Overview
Easy.Tools.Result is a lightweight, professional .NET library that implements the Result Pattern. It helps you write cleaner, more robust code by replacing exceptions with typed return values for flow control.
Features
- Type-Safe: No more
nullchecks or magic strings. - Expressive: Clearly distinguish between Success and Failure.
- Immutable: Thread-safe and predictable.
- Standardized: Consistent error handling across your entire application.
- Multi-Target: Supports
.NET Standard 2.0,.NET Standard 2.1,.NET 8.0,.NET 10.0,.NET 6.0,.net48,.net47.
Installation
Install via NuGet Package Manager:
Install-Package Easy.Tools.Result
Or via .NET CLI:
dotnet add package Easy.Tools.Result
Usage Example
1. Defining Errors
Instead of throwing exceptions, define your domain errors:
public static class DomainErrors
{
public static readonly Error UserNotFound = new("User.NotFound", "The user with the specified ID was not found.");
public static readonly Error InvalidEmail = new("User.InvalidEmail", "The email format is invalid.");
}
2. Returning a Result
Refactor your services to return Result<T> instead of raw objects.
public Result<User> GetUserById(int id)
{
var user = _repository.Find(id);
if (user is null)
{
// Return a clean failure object
return Result.Failure<User>(DomainErrors.UserNotFound);
}
// Return success with data
return Result.Success(user);
}
3. Handling the Result (The Clean Way)
Use the properties to control flow in your Controllers or Managers.
[HttpGet("{id}")]
public IActionResult GetUser(int id)
{
Result<User> result = _userService.GetUserById(id);
if (result.IsFailure)
{
// Return 400 or 404 based on the error
return BadRequest(new { code = result.Error.Code, message = result.Error.Message });
}
return Ok(result.Value);
}
Why Use This Pattern?
Exceptions are for Exceptional Circumstances: User not found or validation error is not an exception; it's a valid business scenario.
Performance: Throwing exceptions is expensive in .NET. Returning a
Resultobject is essentially free.Readability:
Result<User>tells the developer "This might fail", whereasUserlies (it might be null or throw).
Contributing
Contributions and suggestions are welcome. Please open an issue or submit a pull request.
License
MIT License
� 2025 Elmin Alirzayev / Easy Code Tools
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 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 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 is compatible. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7
- No dependencies.
-
.NETFramework 4.8
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
-
net10.0
- No dependencies.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
-