OneOfToActionResult Extensions (MVC OneOf Support β€” v1.22.0)

One-liner MVC controllers for discriminated union returns

// BEFORE β€” manual .Match() for every OneOf return
[HttpPost]
public async Task<IActionResult> Create([FromBody] CreateOrderRequest request)
{
    var result = await _service.CreateOrderAsync(request);
    return result.Match(
        notFound => new NotFoundObjectResult(notFound.Message) as IActionResult,
        conflict => new ConflictObjectResult(conflict.Message),
        validation => new ObjectResult(validation.Message) { StatusCode = 422 },
        order => new OkObjectResult(order));
}

// AFTER β€” one-liner, domain errors auto-mapped
[HttpPost]
public async Task<IActionResult> Create([FromBody] CreateOrderRequest request)
    => (await _service.CreateOrderAsync(request)).ToActionResult();
    // NotFoundError β†’ 404, ConflictError β†’ 409, ValidationError β†’ 422, success β†’ 200

Uses the same two-phase error mapping as OneOfToIResult: 1. Phase 1: Checks IError.Tags["HttpStatusCode"] for tag-based mapping 2. Phase 2: Falls back to type-name heuristic (NotFound β†’ 404, Conflict β†’ 409, etc.)