Как я могу реализовать структуру, чтобы выполнить следующую трансляцию?
var a = new StatusedValue<double>(1, false);
var b = (StatusedValue<int>)a;
Моя реализация должна вести себя аналогично Nullable<T>
, которая отлично работает. Однако этот код не работает с System.InvalidCastException
:
public struct StatusedValue<T> where T : struct
{
public StatusedValue(T value) : this(value, true)
{
}
public StatusedValue(T value, bool isValid)
{
this.value = value;
this.isValid = isValid;
}
private T value;
private bool isValid;
public static implicit operator StatusedValue<T>(T value)
{
return new StatusedValue<T>(value);
}
public static explicit operator T(StatusedValue<T> value)
{
return value.value;
}
}
Результат:
Невозможно передать объект типа "StatusedValue`1 [System.Double]" для ввода 'StatusedValue`1 [System.Int32]'.