Table of Contents

Struct SafeEnum<T>

Namespace
ChartTools.Extensions.Enums
Assembly
ChartTools.dll

Wrapper struct for enum values that automatically validates on set.

public struct SafeEnum<T> : IEnumWrapper<SafeEnum<T>, T>, IEnumWrapper<SafeEnum<T>>, IEquatable<SafeEnum<T>>, IEquatable<SafeEnum<T>?>, IComparable<SafeEnum<T>>, IEqualityOperators<SafeEnum<T>, SafeEnum<T>?, bool>, IComparisonOperators<SafeEnum<T>, SafeEnum<T>, bool>, IEqualityOperators<SafeEnum<T>, SafeEnum<T>, bool>, ISpanParsable<SafeEnum<T>>, IParsable<SafeEnum<T>>, IEquatable<T>, IEquatable<T?>, IComparable<T>, IEqualityOperators<SafeEnum<T>, T?, bool>, IComparisonOperators<SafeEnum<T>, T, bool>, IEqualityOperators<SafeEnum<T>, T, bool>, IBitwiseOperators<SafeEnum<T>, T, T> where T : struct, Enum

Type Parameters

T

Enum type to wrap

Implements
Inherited Members
Extension Methods

Constructors

SafeEnum(T)

Initializes a new instance with enum value post validation.

public SafeEnum(T value)

Parameters

value T

Properties

Value

Gets or sets the enum value with validation on set (field-backed property).

public T Value { readonly get; set; }

Property Value

T

Methods

CompareTo(SafeEnum<T>)

public readonly int CompareTo(SafeEnum<T> other)

Parameters

other SafeEnum<T>

Returns

int

CompareTo(T)

public readonly int CompareTo(T other)

Parameters

other T

Returns

int

Equals(SafeEnum<T>)

public readonly bool Equals(SafeEnum<T> other)

Parameters

other SafeEnum<T>

Returns

bool

Equals(SafeEnum<T>?)

public readonly bool Equals(SafeEnum<T>? nullable)

Parameters

nullable SafeEnum<T>?

Returns

bool

Equals(T?)

public readonly bool Equals(T? nullable)

Parameters

nullable T?

Returns

bool

Equals(object)

public override readonly bool Equals(object obj)

Parameters

obj object

Returns

bool

Equals(T)

public readonly bool Equals(T other)

Parameters

other T

Returns

bool

GetHashCode()

Gets HashCode of the enum value.

public override readonly int GetHashCode()

Returns

int

Parse(in ReadOnlySpan<char>)

public static SafeEnum<T> Parse(in ReadOnlySpan<char> value)

Parameters

value ReadOnlySpan<char>

Returns

SafeEnum<T>

Parse(string)

public static SafeEnum<T> Parse(string value)

Parameters

value string

Returns

SafeEnum<T>

ToString()

ToString() implementation of SafeEnum.

public override readonly string ToString()

Returns

string

TryParse(in ReadOnlySpan<char>, out SafeEnum<T>)

public static bool TryParse(in ReadOnlySpan<char> value, out SafeEnum<T> result)

Parameters

value ReadOnlySpan<char>
result SafeEnum<T>

Returns

bool

TryParse(string, out SafeEnum<T>)

public static bool TryParse(string value, out SafeEnum<T> result)

Parameters

value string
result SafeEnum<T>

Returns

bool

Operators

operator &(SafeEnum<T>, SafeEnum<T>)

public static T operator &(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

T

operator |(SafeEnum<T>, SafeEnum<T>)

public static T operator |(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

T

operator ^(SafeEnum<T>, SafeEnum<T>)

public static T operator ^(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

T

operator >(SafeEnum<T>, SafeEnum<T>?)

public static bool operator >(SafeEnum<T> left, SafeEnum<T>? right)

Parameters

left SafeEnum<T>
right SafeEnum<T>?

Returns

bool

operator >(SafeEnum<T>, T?)

public static bool operator >(SafeEnum<T> left, T? right)

Parameters

left SafeEnum<T>
right T?

Returns

bool

operator >=(SafeEnum<T>, SafeEnum<T>?)

public static bool operator >=(SafeEnum<T> left, SafeEnum<T>? right)

Parameters

left SafeEnum<T>
right SafeEnum<T>?

Returns

bool

operator >=(SafeEnum<T>, T?)

public static bool operator >=(SafeEnum<T> left, T? right)

Parameters

left SafeEnum<T>
right T?

Returns

bool

operator <<(SafeEnum<T>, int)

public static T operator <<(SafeEnum<T> value, int shiftAmount)

Parameters

value SafeEnum<T>
shiftAmount int

Returns

T

operator <(SafeEnum<T>, SafeEnum<T>?)

public static bool operator <(SafeEnum<T> left, SafeEnum<T>? right)

Parameters

left SafeEnum<T>
right SafeEnum<T>?

Returns

bool

operator <(SafeEnum<T>, T?)

public static bool operator <(SafeEnum<T> left, T? right)

Parameters

left SafeEnum<T>
right T?

Returns

bool

operator <=(SafeEnum<T>, SafeEnum<T>?)

public static bool operator <=(SafeEnum<T> left, SafeEnum<T>? right)

Parameters

left SafeEnum<T>
right SafeEnum<T>?

Returns

bool

operator <=(SafeEnum<T>, T?)

public static bool operator <=(SafeEnum<T> left, T? right)

Parameters

left SafeEnum<T>
right T?

Returns

bool

operator >>(SafeEnum<T>, int)

public static T operator >>(SafeEnum<T> value, int shiftAmount)

Parameters

value SafeEnum<T>
shiftAmount int

Returns

T

operator >>>(SafeEnum<T>, int)

public static T operator >>>(SafeEnum<T> value, int shiftAmount)

Parameters

value SafeEnum<T>
shiftAmount int

Returns

T

Explicit Interface Implementations

operator &(SafeEnum<T>, T)

static T operator &(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

T

operator |(SafeEnum<T>, T)

static T operator |(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

T

operator ==(SafeEnum<T>, SafeEnum<T>)

static bool operator ==(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

bool

operator ==(SafeEnum<T>, SafeEnum<T>?)

static bool operator ==(SafeEnum<T> left, SafeEnum<T>? right)

Parameters

left SafeEnum<T>
right SafeEnum<T>?

Returns

bool

operator ==(SafeEnum<T>, T?)

static bool operator ==(SafeEnum<T> left, T? right)

Parameters

left SafeEnum<T>
right T?

Returns

bool

operator ==(SafeEnum<T>, T)

static bool operator ==(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

bool

operator ^(SafeEnum<T>, T)

static T operator ^(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

T

operator >(SafeEnum<T>, SafeEnum<T>)

static bool operator >(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

bool

operator >(SafeEnum<T>, T)

static bool operator >(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

bool

operator >=(SafeEnum<T>, SafeEnum<T>)

static bool operator >=(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

bool

operator >=(SafeEnum<T>, T)

static bool operator >=(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

bool

implicit operator T(SafeEnum<T>)

static implicit operator T(SafeEnum<T> wrapper)

Parameters

wrapper SafeEnum<T>

Returns

T

implicit operator SafeEnum<T>(T)

static implicit operator SafeEnum<T>(T value)

Parameters

value T

Returns

SafeEnum<T>

operator !=(SafeEnum<T>, SafeEnum<T>)

static bool operator !=(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

bool

operator !=(SafeEnum<T>, SafeEnum<T>?)

static bool operator !=(SafeEnum<T> left, SafeEnum<T>? right)

Parameters

left SafeEnum<T>
right SafeEnum<T>?

Returns

bool

operator !=(SafeEnum<T>, T?)

static bool operator !=(SafeEnum<T> left, T? right)

Parameters

left SafeEnum<T>
right T?

Returns

bool

operator !=(SafeEnum<T>, T)

static bool operator !=(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

bool

operator <(SafeEnum<T>, SafeEnum<T>)

static bool operator <(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

bool

operator <(SafeEnum<T>, T)

static bool operator <(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

bool

operator <=(SafeEnum<T>, SafeEnum<T>)

static bool operator <=(SafeEnum<T> left, SafeEnum<T> right)

Parameters

left SafeEnum<T>
right SafeEnum<T>

Returns

bool

operator <=(SafeEnum<T>, T)

static bool operator <=(SafeEnum<T> left, T right)

Parameters

left SafeEnum<T>
right T

Returns

bool

operator ~(SafeEnum<T>)

static T operator ~(SafeEnum<T> value)

Parameters

value SafeEnum<T>

Returns

T