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:
- OptionalETag<T>(Result<T>, EntityTagValue[]?) —
If-Matchis optional (skips if absent) - RequireETag<T>(Result<T>, EntityTagValue[]?) —
If-Matchis required (428 if absent)
public static class AggregateETagExtensions
- Inheritance
-
AggregateETagExtensions
- Inherited Members
Methods
OptionalETagAsync<T>(Task<Result<T>>, EntityTagValue[]?)
Async Task overload of OptionalETag<T>(Result<T>, EntityTagValue[]?).
public static Task<Result<T>> OptionalETagAsync<T>(this Task<Result<T>> resultTask, EntityTagValue[]? expectedETags) where T : IAggregate
Parameters
resultTaskTask<Result<T>>expectedETagsEntityTagValue[]
Returns
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
resultTaskValueTask<Result<T>>expectedETagsEntityTagValue[]
Returns
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
resultResult<T>expectedETagsEntityTagValue[]
Returns
- Result<T>
Type Parameters
T
RequireETagAsync<T>(Task<Result<T>>, EntityTagValue[]?)
Async Task overload of RequireETag<T>(Result<T>, EntityTagValue[]?).
public static Task<Result<T>> RequireETagAsync<T>(this Task<Result<T>> resultTask, EntityTagValue[]? expectedETags) where T : IAggregate
Parameters
resultTaskTask<Result<T>>expectedETagsEntityTagValue[]
Returns
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
resultTaskValueTask<Result<T>>expectedETagsEntityTagValue[]
Returns
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
resultResult<T>expectedETagsEntityTagValue[]
Returns
- Result<T>
Type Parameters
T