Table of Contents

Class AggregateETagExtensions

Namespace
Trellis
Assembly
Trellis.DomainDrivenDesign.dll

Extension methods for ETag-based optimistic concurrency validation on aggregate results. Two modes are available — the service owner chooses which to use:

public static class AggregateETagExtensions
Inheritance
AggregateETagExtensions
Inherited Members

Methods

OptionalETagAsync<T>(Task<Result<T>>, EntityTagValue[]?)

public static Task<Result<T>> OptionalETagAsync<T>(this Task<Result<T>> resultTask, EntityTagValue[]? expectedETags) where T : IAggregate

Parameters

resultTask Task<Result<T>>
expectedETags EntityTagValue[]

Returns

Task<Result<T>>

Type Parameters

T

OptionalETagAsync<T>(ValueTask<Result<T>>, EntityTagValue[]?)

Async ValueTask overload of OptionalETag<T>(Result<T>, EntityTagValue[]?).

public static ValueTask<Result<T>> OptionalETagAsync<T>(this ValueTask<Result<T>> resultTask, EntityTagValue[]? expectedETags) where T : IAggregate

Parameters

resultTask ValueTask<Result<T>>
expectedETags EntityTagValue[]

Returns

ValueTask<Result<T>>

Type Parameters

T

OptionalETag<T>(Result<T>, EntityTagValue[]?)

Validates that the aggregate's ETag matches one of the expected typed EntityTagValues. Uses strong comparison per RFC 9110 §13.1.1. If-Match is optional — if expectedETags is null, the request proceeds unconditionally.

public static Result<T> OptionalETag<T>(this Result<T> result, EntityTagValue[]? expectedETags) where T : IAggregate

Parameters

result Result<T>
expectedETags EntityTagValue[]

Returns

Result<T>

Type Parameters

T

RequireETagAsync<T>(Task<Result<T>>, EntityTagValue[]?)

public static Task<Result<T>> RequireETagAsync<T>(this Task<Result<T>> resultTask, EntityTagValue[]? expectedETags) where T : IAggregate

Parameters

resultTask Task<Result<T>>
expectedETags EntityTagValue[]

Returns

Task<Result<T>>

Type Parameters

T

RequireETagAsync<T>(ValueTask<Result<T>>, EntityTagValue[]?)

Async ValueTask overload of RequireETag<T>(Result<T>, EntityTagValue[]?).

public static ValueTask<Result<T>> RequireETagAsync<T>(this ValueTask<Result<T>> resultTask, EntityTagValue[]? expectedETags) where T : IAggregate

Parameters

resultTask ValueTask<Result<T>>
expectedETags EntityTagValue[]

Returns

ValueTask<Result<T>>

Type Parameters

T

RequireETag<T>(Result<T>, EntityTagValue[]?)

Validates that the aggregate's ETag matches one of the expected typed EntityTagValues. Uses strong comparison per RFC 9110 §13.1.1. If-Match is required — if expectedETags is null, returns PreconditionRequiredError (HTTP 428).

public static Result<T> RequireETag<T>(this Result<T> result, EntityTagValue[]? expectedETags) where T : IAggregate

Parameters

result Result<T>
expectedETags EntityTagValue[]

Returns

Result<T>

Type Parameters

T