Class OneOf<T1, T2, T3, T4, T5, T6>
- Namespace
- REslava.Result.AdvancedPatterns
- Assembly
- REslava.Result.dll
Represents a value that can be one of six possible types. A type-safe discriminated union for functional programming patterns.
public sealed class OneOf<T1, T2, T3, T4, T5, T6> : OneOfBase<T1, T2, T3, T4, T5, T6>, IOneOf<T1, T2, T3, T4, T5, T6>, IEquatable<OneOf<T1, T2, T3, T4, T5, T6>>
Type Parameters
T1The first possible type.
T2The second possible type.
T3The third possible type.
T4The fourth possible type.
T5The fifth possible type.
T6The sixth possible type.
- Inheritance
-
OneOfBase<T1, T2, T3, T4, T5, T6>OneOf<T1, T2, T3, T4, T5, T6>
- Implements
-
IOneOf<T1, T2, T3, T4, T5, T6>IEquatable<OneOf<T1, T2, T3, T4, T5, T6>>
- Inherited Members
- Extension Methods
Examples
OneOf<Success, ValidationError, NotFoundError, ConflictError, UnauthorizedError, ServerError> response = await CallApi();
return response.Match(
case1: data => ProcessData(data),
case2: err => HandleValidation(err),
case3: err => HandleNotFound(err),
case4: err => HandleConflict(err),
case5: err => HandleUnauthorized(err),
case6: err => HandleServerError(err)
);
Methods
BindT2<TNewT2>(Func<T2, OneOf<T1, TNewT2, T3, T4, T5, T6>>)
Binds the T2 value if present, otherwise propagates other types.
public OneOf<T1, TNewT2, T3, T4, T5, T6> BindT2<TNewT2>(Func<T2, OneOf<T1, TNewT2, T3, T4, T5, T6>> binder)
Parameters
Returns
- OneOf<T1, TNewT2, T3, T4, T5, T6>
Type Parameters
TNewT2
Exceptions
- ArgumentNullException
Thrown when binder is null.
BindT3<TNewT3>(Func<T3, OneOf<T1, T2, TNewT3, T4, T5, T6>>)
Binds the T3 value if present, otherwise propagates other types.
public OneOf<T1, T2, TNewT3, T4, T5, T6> BindT3<TNewT3>(Func<T3, OneOf<T1, T2, TNewT3, T4, T5, T6>> binder)
Parameters
Returns
- OneOf<T1, T2, TNewT3, T4, T5, T6>
Type Parameters
TNewT3
Exceptions
- ArgumentNullException
Thrown when binder is null.
BindT4<TNewT4>(Func<T4, OneOf<T1, T2, T3, TNewT4, T5, T6>>)
Binds the T4 value if present, otherwise propagates other types.
public OneOf<T1, T2, T3, TNewT4, T5, T6> BindT4<TNewT4>(Func<T4, OneOf<T1, T2, T3, TNewT4, T5, T6>> binder)
Parameters
Returns
- OneOf<T1, T2, T3, TNewT4, T5, T6>
Type Parameters
TNewT4
Exceptions
- ArgumentNullException
Thrown when binder is null.
BindT5<TNewT5>(Func<T5, OneOf<T1, T2, T3, T4, TNewT5, T6>>)
Binds the T5 value if present, otherwise propagates other types.
public OneOf<T1, T2, T3, T4, TNewT5, T6> BindT5<TNewT5>(Func<T5, OneOf<T1, T2, T3, T4, TNewT5, T6>> binder)
Parameters
Returns
- OneOf<T1, T2, T3, T4, TNewT5, T6>
Type Parameters
TNewT5
Exceptions
- ArgumentNullException
Thrown when binder is null.
Equals(OneOf<T1, T2, T3, T4, T5, T6>?)
Determines equality between two OneOf instances.
public bool Equals(OneOf<T1, T2, T3, T4, T5, T6>? other)
Parameters
otherOneOf<T1, T2, T3, T4, T5, T6>
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, T5, T6> FromT1(T1 value)
Parameters
valueT1
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
FromT2(T2)
Creates a OneOf containing a T2 value.
public static OneOf<T1, T2, T3, T4, T5, T6> FromT2(T2 value)
Parameters
valueT2
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
FromT3(T3)
Creates a OneOf containing a T3 value.
public static OneOf<T1, T2, T3, T4, T5, T6> FromT3(T3 value)
Parameters
valueT3
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
FromT4(T4)
Creates a OneOf containing a T4 value.
public static OneOf<T1, T2, T3, T4, T5, T6> FromT4(T4 value)
Parameters
valueT4
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
FromT5(T5)
Creates a OneOf containing a T5 value.
public static OneOf<T1, T2, T3, T4, T5, T6> FromT5(T5 value)
Parameters
valueT5
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
FromT6(T6)
Creates a OneOf containing a T6 value.
public static OneOf<T1, T2, T3, T4, T5, T6> FromT6(T6 value)
Parameters
valueT6
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
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, T5, T6> MapT2<TNewT2>(Func<T2, TNewT2> mapper)
Parameters
mapperFunc<T2, TNewT2>
Returns
- OneOf<T1, TNewT2, T3, T4, T5, T6>
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, T5, T6> MapT3<TNewT3>(Func<T3, TNewT3> mapper)
Parameters
mapperFunc<T3, TNewT3>
Returns
- OneOf<T1, T2, TNewT3, T4, T5, T6>
Type Parameters
TNewT3
Exceptions
- ArgumentNullException
Thrown when mapper is null.
MapT4<TNewT4>(Func<T4, TNewT4>)
Maps the T4 value if present, otherwise propagates other types.
public OneOf<T1, T2, T3, TNewT4, T5, T6> MapT4<TNewT4>(Func<T4, TNewT4> mapper)
Parameters
mapperFunc<T4, TNewT4>
Returns
- OneOf<T1, T2, T3, TNewT4, T5, T6>
Type Parameters
TNewT4
Exceptions
- ArgumentNullException
Thrown when mapper is null.
MapT5<TNewT5>(Func<T5, TNewT5>)
Maps the T5 value if present, otherwise propagates other types.
public OneOf<T1, T2, T3, T4, TNewT5, T6> MapT5<TNewT5>(Func<T5, TNewT5> mapper)
Parameters
mapperFunc<T5, TNewT5>
Returns
- OneOf<T1, T2, T3, T4, TNewT5, T6>
Type Parameters
TNewT5
Exceptions
- ArgumentNullException
Thrown when mapper is null.
Operators
operator ==(OneOf<T1, T2, T3, T4, T5, T6>?, OneOf<T1, T2, T3, T4, T5, T6>?)
Equality operator for OneOf instances.
public static bool operator ==(OneOf<T1, T2, T3, T4, T5, T6>? left, OneOf<T1, T2, T3, T4, T5, T6>? right)
Parameters
Returns
implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T1)
Implicit conversion from T1.
public static implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T1 value)
Parameters
valueT1
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T2)
Implicit conversion from T2.
public static implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T2 value)
Parameters
valueT2
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T3)
Implicit conversion from T3.
public static implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T3 value)
Parameters
valueT3
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T4)
Implicit conversion from T4.
public static implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T4 value)
Parameters
valueT4
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T5)
Implicit conversion from T5.
public static implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T5 value)
Parameters
valueT5
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T6)
Implicit conversion from T6.
public static implicit operator OneOf<T1, T2, T3, T4, T5, T6>(T6 value)
Parameters
valueT6
Returns
- OneOf<T1, T2, T3, T4, T5, T6>
operator !=(OneOf<T1, T2, T3, T4, T5, T6>?, OneOf<T1, T2, T3, T4, T5, T6>?)
Inequality operator for OneOf instances.
public static bool operator !=(OneOf<T1, T2, T3, T4, T5, T6>? left, OneOf<T1, T2, T3, T4, T5, T6>? right)