Class OneOf<T1, T2, T3, T4>
- Namespace
- REslava.Result.AdvancedPatterns
- Assembly
- REslava.Result.dll
Represents a value that can be one of four possible types. A type-safe discriminated union for functional programming patterns.
public sealed class OneOf<T1, T2, T3, T4> : OneOfBase<T1, T2, T3, T4>, IOneOf<T1, T2, T3, T4>, IEquatable<OneOf<T1, T2, T3, T4>>
Type Parameters
T1The first possible type.
T2The second possible type.
T3The third possible type.
T4The fourth possible type.
- Inheritance
-
OneOfBase<T1, T2, T3, T4>OneOf<T1, T2, T3, T4>
- Implements
-
IOneOf<T1, T2, T3, T4>IEquatable<OneOf<T1, T2, T3, T4>>
- Inherited Members
- Extension Methods
Examples
OneOf<SuccessData, ValidationError, NotFoundError, ServerError> response = await CallApi();
return response.Match(
case1: data => ProcessData(data),
case2: validationError => HandleValidationError(validationError),
case3: notFoundError => HandleNotFoundError(notFoundError),
case4: serverError => HandleServerError(serverError)
);
Methods
BindT2<TNewT2>(Func<T2, OneOf<T1, TNewT2, T3, T4>>)
Binds the T2 value if present, otherwise propagates other types.
public OneOf<T1, TNewT2, T3, T4> BindT2<TNewT2>(Func<T2, OneOf<T1, TNewT2, T3, T4>> binder)
Parameters
Returns
- OneOf<T1, TNewT2, T3, T4>
Type Parameters
TNewT2
Exceptions
- ArgumentNullException
Thrown when binder is null.
BindT3<TNewT3>(Func<T3, OneOf<T1, T2, TNewT3, T4>>)
Binds the T3 value if present, otherwise propagates other types.
public OneOf<T1, T2, TNewT3, T4> BindT3<TNewT3>(Func<T3, OneOf<T1, T2, TNewT3, T4>> binder)
Parameters
Returns
- OneOf<T1, T2, TNewT3, T4>
Type Parameters
TNewT3
Exceptions
- ArgumentNullException
Thrown when binder is null.
Equals(OneOf<T1, T2, T3, T4>?)
Determines equality between two OneOf instances.
public bool Equals(OneOf<T1, T2, T3, T4>? other)
Parameters
otherOneOf<T1, T2, T3, T4>
Returns
Equals(object?)
Determines whether the specified object is equal to the current object.
public override bool Equals(object? obj)
Parameters
objobjectThe object to compare with the current object.
Returns
FromT1(T1)
Creates a OneOf containing a T1 value.
public static OneOf<T1, T2, T3, T4> FromT1(T1 value)
Parameters
valueT1
Returns
- OneOf<T1, T2, T3, T4>
FromT2(T2)
Creates a OneOf containing a T2 value.
public static OneOf<T1, T2, T3, T4> FromT2(T2 value)
Parameters
valueT2
Returns
- OneOf<T1, T2, T3, T4>
FromT3(T3)
Creates a OneOf containing a T3 value.
public static OneOf<T1, T2, T3, T4> FromT3(T3 value)
Parameters
valueT3
Returns
- OneOf<T1, T2, T3, T4>
FromT4(T4)
Creates a OneOf containing a T4 value.
public static OneOf<T1, T2, T3, T4> FromT4(T4 value)
Parameters
valueT4
Returns
- OneOf<T1, T2, T3, T4>
GetHashCode()
Serves as the default hash function.
public override int GetHashCode()
Returns
- int
A hash code for the current object.
MapT2<TNewT2>(Func<T2, TNewT2>)
Maps the T2 value if present, otherwise propagates other types.
public OneOf<T1, TNewT2, T3, T4> MapT2<TNewT2>(Func<T2, TNewT2> mapper)
Parameters
mapperFunc<T2, TNewT2>
Returns
- OneOf<T1, TNewT2, T3, T4>
Type Parameters
TNewT2
Exceptions
- ArgumentNullException
Thrown when mapper is null.
MapT3<TNewT3>(Func<T3, TNewT3>)
Maps the T3 value if present, otherwise propagates other types.
public OneOf<T1, T2, TNewT3, T4> MapT3<TNewT3>(Func<T3, TNewT3> mapper)
Parameters
mapperFunc<T3, TNewT3>
Returns
- OneOf<T1, T2, TNewT3, T4>
Type Parameters
TNewT3
Exceptions
- ArgumentNullException
Thrown when mapper is null.
Operators
operator ==(OneOf<T1, T2, T3, T4>?, OneOf<T1, T2, T3, T4>?)
Equality operator for OneOf instances.
public static bool operator ==(OneOf<T1, T2, T3, T4>? left, OneOf<T1, T2, T3, T4>? right)
Parameters
Returns
implicit operator OneOf<T1, T2, T3, T4>(T1)
Implicit conversion from T1.
public static implicit operator OneOf<T1, T2, T3, T4>(T1 value)
Parameters
valueT1
Returns
- OneOf<T1, T2, T3, T4>
implicit operator OneOf<T1, T2, T3, T4>(T2)
Implicit conversion from T2.
public static implicit operator OneOf<T1, T2, T3, T4>(T2 value)
Parameters
valueT2
Returns
- OneOf<T1, T2, T3, T4>
implicit operator OneOf<T1, T2, T3, T4>(T3)
Implicit conversion from T3.
public static implicit operator OneOf<T1, T2, T3, T4>(T3 value)
Parameters
valueT3
Returns
- OneOf<T1, T2, T3, T4>
implicit operator OneOf<T1, T2, T3, T4>(T4)
Implicit conversion from T4.
public static implicit operator OneOf<T1, T2, T3, T4>(T4 value)
Parameters
valueT4
Returns
- OneOf<T1, T2, T3, T4>
operator !=(OneOf<T1, T2, T3, T4>?, OneOf<T1, T2, T3, T4>?)
Inequality operator for OneOf instances.
public static bool operator !=(OneOf<T1, T2, T3, T4>? left, OneOf<T1, T2, T3, T4>? right)