/// <summary> /// Casts this instance's Status property to a chosen type, regardless of whether it falls into the defined range of enum types. /// </summary> public TStatus GetStatus <TStatus>() { if (StatusConverter <TBaseStatus, TStatus> .Convert != null) { return(StatusConverter <TBaseStatus, TStatus> .Convert(this.Status)); } try { return((TStatus)(object)this.Status); } catch (InvalidCastException) { throw new InvalidOperationException($"Couldn't convert value {this.Status} to type {typeof(TStatus).FullName}"); } }
protected static TBaseStatus Convert <TStatus>(TStatus status) where TStatus : struct { return(StatusConverter <TStatus, TBaseStatus> .Convert(status)); }