Class Reason<TReason>

Namespace
REslava.Result
Assembly
REslava.Result.dll
public abstract class Reason<TReason> : Reason, IReason where TReason : Reason<TReason>

Type Parameters

TReason
Inheritance
Reason<TReason>
Implements
Derived
Inherited Members
Extension Methods

Constructors

Reason(string)

protected Reason(string message)

Parameters

message string

Reason(string, ImmutableDictionary<string, object>)

protected Reason(string message, ImmutableDictionary<string, object> tags)

Parameters

message string
tags ImmutableDictionary<string, object>

Methods

CreateNew(string, ImmutableDictionary<string, object>)

Factory method for creating new instances (maintains immutability). Must be implemented by derived classes.

protected abstract TReason CreateNew(string message, ImmutableDictionary<string, object> tags)

Parameters

message string
tags ImmutableDictionary<string, object>

Returns

TReason

WithMessage(string)

Creates a new instance with updated message (immutable).

public TReason WithMessage(string message)

Parameters

message string

Returns

TReason

WithTag(string, object)

Creates a new instance with an additional tag (immutable). Throws if key already exists.

public TReason WithTag(string key, object value)

Parameters

key string
value object

Returns

TReason

WithTags(params (string key, object value)[])

Creates a new instance with multiple additional tags (immutable). Throws if any key already exists.

public TReason WithTags(params (string key, object value)[] tags)

Parameters

tags (string key, object value)[]

Returns

TReason

WithTagsFrom(ImmutableDictionary<string, object>)

Creates a new instance with additional tags from a dictionary (immutable). Throws if any key already exists.

public TReason WithTagsFrom(ImmutableDictionary<string, object> tags)

Parameters

tags ImmutableDictionary<string, object>

Dictionary containing tags to add.

Returns

TReason

A new instance with the added tags.

Examples

var error = new ValidationError("Invalid input")
    .WithTagsFrom(new Dictionary<string, object>
    {
        ["Field"] = "Email",
        ["Value"] = "invalid-email"
    });