Class OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

Namespace
REslava.Result.AdvancedPatterns
Assembly
REslava.Result.dll

Represents a value that can be one of eight possible types. A type-safe discriminated union for functional programming patterns.

public sealed class OneOf<T1, T2, T3, T4, T5, T6, T7, T8> : OneOfBase<T1, T2, T3, T4, T5, T6, T7, T8>, IOneOf<T1, T2, T3, T4, T5, T6, T7, T8>, IEquatable<OneOf<T1, T2, T3, T4, T5, T6, T7, T8>>

Type Parameters

T1

The first possible type.

T2

The second possible type.

T3

The third possible type.

T4

The fourth possible type.

T5

The fifth possible type.

T6

The sixth possible type.

T7

The seventh possible type.

T8

The eighth possible type.

Inheritance
OneOfBase<T1, T2, T3, T4, T5, T6, T7, T8>
OneOf<T1, T2, T3, T4, T5, T6, T7, T8>
Implements
IOneOf<T1, T2, T3, T4, T5, T6, T7, T8>
IEquatable<OneOf<T1, T2, T3, T4, T5, T6, T7, T8>>
Inherited Members
Extension Methods

Methods

BindT2<TNewT2>(Func<T2, OneOf<T1, TNewT2, T3, T4, T5, T6, T7, T8>>)

Binds the T2 value if present, otherwise propagates other types.

public OneOf<T1, TNewT2, T3, T4, T5, T6, T7, T8> BindT2<TNewT2>(Func<T2, OneOf<T1, TNewT2, T3, T4, T5, T6, T7, T8>> binder)

Parameters

binder Func<T2, OneOf<T1, TNewT2, T3, T4, T5, T6, T7, T8>>

Returns

OneOf<T1, TNewT2, T3, T4, T5, T6, T7, T8>

Type Parameters

TNewT2

Exceptions

ArgumentNullException

Thrown when binder is null.

BindT3<TNewT3>(Func<T3, OneOf<T1, T2, TNewT3, T4, T5, T6, T7, T8>>)

Binds the T3 value if present, otherwise propagates other types.

public OneOf<T1, T2, TNewT3, T4, T5, T6, T7, T8> BindT3<TNewT3>(Func<T3, OneOf<T1, T2, TNewT3, T4, T5, T6, T7, T8>> binder)

Parameters

binder Func<T3, OneOf<T1, T2, TNewT3, T4, T5, T6, T7, T8>>

Returns

OneOf<T1, T2, TNewT3, T4, T5, T6, T7, T8>

Type Parameters

TNewT3

Exceptions

ArgumentNullException

Thrown when binder is null.

BindT4<TNewT4>(Func<T4, OneOf<T1, T2, T3, TNewT4, T5, T6, T7, T8>>)

Binds the T4 value if present, otherwise propagates other types.

public OneOf<T1, T2, T3, TNewT4, T5, T6, T7, T8> BindT4<TNewT4>(Func<T4, OneOf<T1, T2, T3, TNewT4, T5, T6, T7, T8>> binder)

Parameters

binder Func<T4, OneOf<T1, T2, T3, TNewT4, T5, T6, T7, T8>>

Returns

OneOf<T1, T2, T3, TNewT4, T5, T6, T7, T8>

Type Parameters

TNewT4

Exceptions

ArgumentNullException

Thrown when binder is null.

BindT5<TNewT5>(Func<T5, OneOf<T1, T2, T3, T4, TNewT5, T6, T7, T8>>)

Binds the T5 value if present, otherwise propagates other types.

public OneOf<T1, T2, T3, T4, TNewT5, T6, T7, T8> BindT5<TNewT5>(Func<T5, OneOf<T1, T2, T3, T4, TNewT5, T6, T7, T8>> binder)

Parameters

binder Func<T5, OneOf<T1, T2, T3, T4, TNewT5, T6, T7, T8>>

Returns

OneOf<T1, T2, T3, T4, TNewT5, T6, T7, T8>

Type Parameters

TNewT5

Exceptions

ArgumentNullException

Thrown when binder is null.

BindT6<TNewT6>(Func<T6, OneOf<T1, T2, T3, T4, T5, TNewT6, T7, T8>>)

Binds the T6 value if present, otherwise propagates other types.

public OneOf<T1, T2, T3, T4, T5, TNewT6, T7, T8> BindT6<TNewT6>(Func<T6, OneOf<T1, T2, T3, T4, T5, TNewT6, T7, T8>> binder)

Parameters

binder Func<T6, OneOf<T1, T2, T3, T4, T5, TNewT6, T7, T8>>

Returns

OneOf<T1, T2, T3, T4, T5, TNewT6, T7, T8>

Type Parameters

TNewT6

Exceptions

ArgumentNullException

Thrown when binder is null.

BindT7<TNewT7>(Func<T7, OneOf<T1, T2, T3, T4, T5, T6, TNewT7, T8>>)

Binds the T7 value if present, otherwise propagates other types.

public OneOf<T1, T2, T3, T4, T5, T6, TNewT7, T8> BindT7<TNewT7>(Func<T7, OneOf<T1, T2, T3, T4, T5, T6, TNewT7, T8>> binder)

Parameters

binder Func<T7, OneOf<T1, T2, T3, T4, T5, T6, TNewT7, T8>>

Returns

OneOf<T1, T2, T3, T4, T5, T6, TNewT7, T8>

Type Parameters

TNewT7

Exceptions

ArgumentNullException

Thrown when binder is null.

Equals(OneOf<T1, T2, T3, T4, T5, T6, T7, T8>?)

Determines equality between two OneOf instances.

public bool Equals(OneOf<T1, T2, T3, T4, T5, T6, T7, T8>? other)

Parameters

other OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

Returns

bool

Equals(object?)

Determines whether the specified object is equal to the current object.

public override bool Equals(object? obj)

Parameters

obj object

The object to compare with the current object.

Returns

bool

true if the specified object is equal to the current object; otherwise, false.

FromT1(T1)

Creates a OneOf containing a T1 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT1(T1 value)

Parameters

value T1

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

FromT2(T2)

Creates a OneOf containing a T2 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT2(T2 value)

Parameters

value T2

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

FromT3(T3)

Creates a OneOf containing a T3 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT3(T3 value)

Parameters

value T3

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

FromT4(T4)

Creates a OneOf containing a T4 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT4(T4 value)

Parameters

value T4

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

FromT5(T5)

Creates a OneOf containing a T5 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT5(T5 value)

Parameters

value T5

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

FromT6(T6)

Creates a OneOf containing a T6 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT6(T6 value)

Parameters

value T6

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

FromT7(T7)

Creates a OneOf containing a T7 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT7(T7 value)

Parameters

value T7

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

FromT8(T8)

Creates a OneOf containing a T8 value.

public static OneOf<T1, T2, T3, T4, T5, T6, T7, T8> FromT8(T8 value)

Parameters

value T8

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

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, T7, T8> MapT2<TNewT2>(Func<T2, TNewT2> mapper)

Parameters

mapper Func<T2, TNewT2>

Returns

OneOf<T1, TNewT2, T3, T4, T5, T6, T7, T8>

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, T7, T8> MapT3<TNewT3>(Func<T3, TNewT3> mapper)

Parameters

mapper Func<T3, TNewT3>

Returns

OneOf<T1, T2, TNewT3, T4, T5, T6, T7, T8>

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, T7, T8> MapT4<TNewT4>(Func<T4, TNewT4> mapper)

Parameters

mapper Func<T4, TNewT4>

Returns

OneOf<T1, T2, T3, TNewT4, T5, T6, T7, T8>

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, T7, T8> MapT5<TNewT5>(Func<T5, TNewT5> mapper)

Parameters

mapper Func<T5, TNewT5>

Returns

OneOf<T1, T2, T3, T4, TNewT5, T6, T7, T8>

Type Parameters

TNewT5

Exceptions

ArgumentNullException

Thrown when mapper is null.

MapT6<TNewT6>(Func<T6, TNewT6>)

Maps the T6 value if present, otherwise propagates other types.

public OneOf<T1, T2, T3, T4, T5, TNewT6, T7, T8> MapT6<TNewT6>(Func<T6, TNewT6> mapper)

Parameters

mapper Func<T6, TNewT6>

Returns

OneOf<T1, T2, T3, T4, T5, TNewT6, T7, T8>

Type Parameters

TNewT6

Exceptions

ArgumentNullException

Thrown when mapper is null.

MapT7<TNewT7>(Func<T7, TNewT7>)

Maps the T7 value if present, otherwise propagates other types.

public OneOf<T1, T2, T3, T4, T5, T6, TNewT7, T8> MapT7<TNewT7>(Func<T7, TNewT7> mapper)

Parameters

mapper Func<T7, TNewT7>

Returns

OneOf<T1, T2, T3, T4, T5, T6, TNewT7, T8>

Type Parameters

TNewT7

Exceptions

ArgumentNullException

Thrown when mapper is null.

Operators

operator ==(OneOf<T1, T2, T3, T4, T5, T6, T7, T8>?, OneOf<T1, T2, T3, T4, T5, T6, T7, T8>?)

Equality operator for OneOf instances.

public static bool operator ==(OneOf<T1, T2, T3, T4, T5, T6, T7, T8>? left, OneOf<T1, T2, T3, T4, T5, T6, T7, T8>? right)

Parameters

left OneOf<T1, T2, T3, T4, T5, T6, T7, T8>
right OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

Returns

bool

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T1)

Implicit conversion from T1.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T1 value)

Parameters

value T1

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T2)

Implicit conversion from T2.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T2 value)

Parameters

value T2

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T3)

Implicit conversion from T3.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T3 value)

Parameters

value T3

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T4)

Implicit conversion from T4.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T4 value)

Parameters

value T4

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T5)

Implicit conversion from T5.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T5 value)

Parameters

value T5

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T6)

Implicit conversion from T6.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T6 value)

Parameters

value T6

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T7)

Implicit conversion from T7.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T7 value)

Parameters

value T7

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T8)

Implicit conversion from T8.

public static implicit operator OneOf<T1, T2, T3, T4, T5, T6, T7, T8>(T8 value)

Parameters

value T8

Returns

OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

operator !=(OneOf<T1, T2, T3, T4, T5, T6, T7, T8>?, OneOf<T1, T2, T3, T4, T5, T6, T7, T8>?)

Inequality operator for OneOf instances.

public static bool operator !=(OneOf<T1, T2, T3, T4, T5, T6, T7, T8>? left, OneOf<T1, T2, T3, T4, T5, T6, T7, T8>? right)

Parameters

left OneOf<T1, T2, T3, T4, T5, T6, T7, T8>
right OneOf<T1, T2, T3, T4, T5, T6, T7, T8>

Returns

bool