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