对于下面这个通用的C#类,我想把T转换为K:
public abstract class ValueType<T,K> : IValueType<T> where K : ValueType<T,K>,new()
{
public abstract T Value { get; set; }
public static implicit operator ValueType<T,K>(T val)
{
K k = new K();
k.Value = val;
return k;
}
}
如果我要实现一个直接操作符
implicit operator K(T val)
,将会导致编译时错误(CS0556)。我想尝试链接隐式操作符:
public static implicit operator K(ValueType<T,K> vt){
return (K)val;
}
但是以下示例仍然会报错,无法进行转换:
public class Test : ValueType<int, Test>
{
public override int Value{ get; set; }
}
Test t = 6; //complains it's unable to be converted
Console.WriteLine(t.Value);
如果可能的话,我真的希望避免显式转换。
这个问题是基于我之前提出的另一个SO问题而延伸的。