eQuantic.Core.Outcomes.AspNetCore
3.1.0
dotnet add package eQuantic.Core.Outcomes.AspNetCore --version 3.1.0
NuGet\Install-Package eQuantic.Core.Outcomes.AspNetCore -Version 3.1.0
<PackageReference Include="eQuantic.Core.Outcomes.AspNetCore" Version="3.1.0" />
<PackageVersion Include="eQuantic.Core.Outcomes.AspNetCore" Version="3.1.0" />
<PackageReference Include="eQuantic.Core.Outcomes.AspNetCore" />
paket add eQuantic.Core.Outcomes.AspNetCore --version 3.1.0
#r "nuget: eQuantic.Core.Outcomes.AspNetCore, 3.1.0"
#:package eQuantic.Core.Outcomes.AspNetCore@3.1.0
#addin nuget:?package=eQuantic.Core.Outcomes.AspNetCore&version=3.1.0
#tool nuget:?package=eQuantic.Core.Outcomes.AspNetCore&version=3.1.0
eQuantic.Core.Outcomes.AspNetCore
ASP.NET Core integration for
eQuantic.Core.Outcomes: convert Result
types into HTTP responses with automatic status-code mapping and RFC 7807 Problem Details.
MVC controllers:
using eQuantic.Core.Outcomes.AspNetCore;
[HttpGet("{id}")]
public IActionResult Get(int id) =>
userService.GetUser(id).ToActionResult();
// Success → 200 with the value; NotFound → 404; Validation → 400;
// Conflict → 409; Unauthorized → 401 … all as Problem Details.
Minimal APIs (TypedResults-based):
app.MapGet("/users/{id}", (int id, IUserService users) =>
users.GetUser(id).ToHttpResult());
app.MapPost("/users", (CreateUser request, IUserService users) =>
users.Create(request).ToCreatedHttpResult(user => $"/users/{user.Id}"));
app.MapDelete("/users/{id}", (int id, IUserService users) =>
users.Delete(id).ToNoContentHttpResult());
The ErrorType of each failure drives the HTTP status; validation errors are grouped into the
Problem Details errors dictionary. The whole translation is extensible: derive from
OutcomeHttpMapping, override what you need and pass it to any of the extensions —
public sealed class MyMapping : OutcomeHttpMapping
{
public override int GetStatusCode(IError error) =>
error.Type == ErrorType.BusinessRule ? StatusCodes.Status409Conflict
: base.GetStatusCode(error);
}
result.ToHttpResult(new MyMapping()); // both adapters honor the same mapping
result.ToActionResult(new MyMapping());
Until v2, these extensions shipped inside the core package (forcing every consumer to reference
Microsoft.AspNetCore.App). From v3 they live here, and the core stays dependency-free.
Targets net8.0/net10.0. Full documentation: https://github.com/eQuantic/core-outcomes
MIT © eQuantic Tech
| Product | Versions 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 was computed. 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. |
-
net10.0
- eQuantic.Core.Outcomes (>= 3.1.0)
-
net8.0
- eQuantic.Core.Outcomes (>= 3.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v3.0.0 - First release as a dedicated package (previously part of eQuantic.Core.Outcomes).