Для следующего общего класса C # я бы хотел преобразовать T в K:
public abstract class ValueType : IValueType where K : ValueType,new()
{
public abstract T Value { get; set; }
public static implicit operator ValueType(T val)
{
K k = new K();
k.Value = val;
return k;
}
}
Если бы я реализовал прямой оператор неявный оператор K (T val)
это приведет к ошибке времени компиляции (CS0556).
Я подумал, что могу попробовать связать неявные операторы:
public static implicit operator K(ValueType vt){
return (K)val;
}
но в следующем примере все еще жалуется, что он не может быть преобразован:
public class Test : ValueType
{
public override int Value{ get; set; }
}
Test t = 6; //complains it's unable to be converted
Console.WriteLine(t.Value);
Я действительно хочу по возможности избегайте явного приведения типов.
Этот вопрос расширяет другой вопрос SO , который я ранее поднимал.