Class Reason<TReason>
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
messagestring
Reason(string, ImmutableDictionary<string, object>)
protected Reason(string message, ImmutableDictionary<string, object> tags)
Parameters
messagestringtagsImmutableDictionary<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
messagestringtagsImmutableDictionary<string, object>
Returns
- TReason
WithMessage(string)
Creates a new instance with updated message (immutable).
public TReason WithMessage(string message)
Parameters
messagestring
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
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
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
tagsImmutableDictionary<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"
});