Struct Result<T, TError>
Represents a result of operation which can be actual result or error code.
Implements
Inherited Members
Namespace: DotNext
Assembly: DotNext.dll
Syntax
public readonly struct Result<T, TError> : IResultMonad<T, TError, Result<T, TError>>, IResultMonad<T, TError>, IOptionMonad<T, Result<T, TError>>, IOptionMonad<T>, ISupplier<object?>, IFunctional<Func<object?>> where TError : struct, Enum
Type Parameters
Name | Description |
---|---|
T | The type of the result. |
TError | The type of the error code. Default value must represent the successful result. |
Constructors
| Edit this page View SourceResult(T)
Initializes a new successful result.
Declaration
public Result(T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | The result value. |
Result(TError)
Initializes a new unsuccessful result.
Declaration
public Result(TError error)
Parameters
Type | Name | Description |
---|---|---|
TError | error | The error code. |
Exceptions
Type | Condition |
---|---|
ArgumentOutOfRangeException |
|
Properties
| Edit this page View SourceError
Gets the error code.
Declaration
public TError Error { get; }
Property Value
Type | Description |
---|---|
TError |
IsSuccessful
Indicates that the result is successful.
Declaration
public bool IsSuccessful { get; }
Property Value
Type | Description |
---|---|
bool | true if this result is successful; false if this result represents exception. |
Value
Extracts the actual result.
Declaration
public T Value { get; }
Property Value
Type | Description |
---|---|
T |
Exceptions
Type | Condition |
---|---|
UndefinedResultException<TError> | The value is unavailable. |
ValueOrDefault
Returns the value if present; otherwise return default value.
Declaration
public T? ValueOrDefault { get; }
Property Value
Type | Description |
---|---|
T | The value, if present, otherwise |
ValueRef
Gets a reference to the underlying value.
Declaration
[JsonIgnore]
public ref readonly T ValueRef { get; }
Property Value
Type | Description |
---|---|
T | The reference to the result. |
Exceptions
Type | Condition |
---|---|
UndefinedResultException<TError> | The value is unavailable. |
Methods
| Edit this page View SourceBox()
Gets boxed representation of the result.
Declaration
public Result<object?, TError> Box()
Returns
Type | Description |
---|---|
Result<object, TError> | The boxed representation of the result. |
Convert<TResult>(delegate*<T, TResult>)
If successful result is present, apply the provided mapping function hiding any exception caused by the converter.
Declaration
[CLSCompliant(false)]
public Result<TResult, TError> Convert<TResult>(delegate*<T, TResult> converter)
Parameters
Type | Name | Description |
---|---|---|
delegate*<T, TResult> | converter | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Result<TResult, TError> | The conversion result. |
Type Parameters
Name | Description |
---|---|
TResult | The type of the result of the mapping function. |
Convert<TResult>(Converter<T, TResult>)
If successful result is present, apply the provided mapping function hiding any exception caused by the converter.
Declaration
public Result<TResult, TError> Convert<TResult>(Converter<T, TResult> converter)
Parameters
Type | Name | Description |
---|---|---|
Converter<T, TResult> | converter | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Result<TResult, TError> | The conversion result. |
Type Parameters
Name | Description |
---|---|
TResult | The type of the result of the mapping function. |
Or(T?)
Returns the value if present; otherwise return default value.
Declaration
public T? Or(T? defaultValue)
Parameters
Type | Name | Description |
---|---|---|
T | defaultValue | The value to be returned if this result is unsuccessful. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise |
OrInvoke(delegate*<TError, T>)
Returns the value if present; otherwise invoke delegate.
Declaration
[CLSCompliant(false)]
public T OrInvoke(delegate*<TError, T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
delegate*<TError, T> | defaultFunc | A delegate to be invoked if value is not present. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise returned from delegate. |
OrInvoke(delegate*<TError, T>)
Returns the value if present; otherwise invoke delegate.
Declaration
[CLSCompliant(false)]
public T OrInvoke(delegate*<TError, T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
delegate*<TError, T> | defaultFunc | A delegate to be invoked if value is not present. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise returned from delegate. |
OrInvoke(Func<T>)
Returns the value if present; otherwise invoke delegate.
Declaration
public T OrInvoke(Func<T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
Func<T> | defaultFunc | A delegate to be invoked if value is not present. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise returned from delegate. |
OrInvoke(Func<TError, T>)
Returns the value if present; otherwise invoke delegate.
Declaration
public T OrInvoke(Func<TError, T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
Func<TError, T> | defaultFunc | A delegate to be invoked if value is not present. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise returned from delegate. |
OrThrow(delegate*<TError, Exception>)
Gets underlying value or throws an exception.
Declaration
[CLSCompliant(false)]
public T OrThrow(delegate*<TError, Exception> exceptionFactory)
Parameters
Type | Name | Description |
---|---|---|
delegate*<TError, Exception> | exceptionFactory | The exception factory that accepts the error code. |
Returns
Type | Description |
---|---|
T | The underlying value. |
Exceptions
Type | Condition |
---|---|
Exception | The result is unsuccessful. |
OrThrow(Func<TError, Exception>)
Gets underlying value or throws an exception.
Declaration
public T OrThrow(Func<TError, Exception> exceptionFactory)
Parameters
Type | Name | Description |
---|---|---|
Func<TError, Exception> | exceptionFactory | The exception factory that accepts the error code. |
Returns
Type | Description |
---|---|
T | The underlying value. |
Exceptions
Type | Condition |
---|---|
Exception | The result is unsuccessful. |
ToResult()
Converts this result into Result<T>.
Declaration
public Result<T> ToResult()
Returns
Type | Description |
---|---|
Result<T> | The converted result. |
ToString()
Returns textual representation of this object.
Declaration
public override string? ToString()
Returns
Type | Description |
---|---|
string | The textual representation of this object. |
Overrides
| Edit this page View SourceTryGet()
Converts the result into Optional<T>.
Declaration
public Optional<T> TryGet()
Returns
Type | Description |
---|---|
Optional<T> | Option monad representing value in this monad. |
TryGet(out T)
Attempts to extract value from container if it is present.
Declaration
public bool TryGet(out T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | Extracted value. |
Returns
Type | Description |
---|---|
bool |
Operators
| Edit this page View Sourceoperator &(in Result<T, TError>, in Result<T, TError>)
Indicates that both results are successful.
Declaration
public static bool operator &(in Result<T, TError> left, in Result<T, TError> right)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | left | The first result to check. |
Result<T, TError> | right | The second result to check. |
Returns
Type | Description |
---|---|
bool |
operator |(in Result<T, TError>, in Result<T, TError>)
Tries to return successful result.
Declaration
public static Result<T, TError> operator |(in Result<T, TError> x, in Result<T, TError> y)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | x | The first container. |
Result<T, TError> | y | The second container. |
Returns
Type | Description |
---|---|
Result<T, TError> | The first successful result. |
operator |(in Result<T, TError>, T?)
Returns the value if present; otherwise return default value.
Declaration
public static T? operator |(in Result<T, TError> result, T? defaultValue)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | result | The result to check. |
T | defaultValue | The value to be returned if this result is unsuccessful. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise |
explicit operator T(in Result<T, TError>)
Extracts actual result.
Declaration
public static explicit operator T(in Result<T, TError> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | result | The result object. |
Returns
Type | Description |
---|---|
T |
operator false(in Result<T, TError>)
Indicates that the result represents error.
Declaration
public static bool operator false(in Result<T, TError> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | result | The result to check. |
Returns
Type | Description |
---|---|
bool | false if this result is successful; true if this result represents exception. |
implicit operator Optional<T>(in Result<T, TError>)
Converts the result into Optional<T>.
Declaration
public static implicit operator Optional<T>(in Result<T, TError> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | result | The result to be converted. |
Returns
Type | Description |
---|---|
Optional<T> | Option monad representing value in this monad. |
implicit operator Result<T>(in Result<T, TError>)
Converts the result into Result<T>.
Declaration
public static implicit operator Result<T>(in Result<T, TError> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | result | The result to be converted. |
Returns
Type | Description |
---|---|
Result<T> | The converted result. |
implicit operator Result<T, TError>(T)
Converts value into the result.
Declaration
public static implicit operator Result<T, TError>(T result)
Parameters
Type | Name | Description |
---|---|---|
T | result | The result to be converted. |
Returns
Type | Description |
---|---|
Result<T, TError> | The result representing |
operator true(in Result<T, TError>)
Indicates that the result is successful.
Declaration
public static bool operator true(in Result<T, TError> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T, TError> | result | The result to check. |
Returns
Type | Description |
---|---|
bool | true if this result is successful; false if this result represents exception. |