我正在尝试将泛型类型转换为固定类型。
以下是我期望的工作,但它有一个根本性的缺陷。
public class Wrapper<T>
{
public T Value;
static public implicit operator TypeWithInt(Wrapper<int> wrapper)
{
return new TypeWithInt(wrapper.Value);
}
static public implicit operator TypeWithFloat(Wrapper<float> wrapper)
{
return new TypeWithFloat(wrapper.Value);
}
static public implicit operator TypeWithDouble(Wrapper<double> wrapper)
{
return new TypeWithDouble(wrapper.Value);
}
}
上面的代码无法编译并出现以下错误:
User-defined conversion must convert to or from the enclosing type
As Wrapper<int>
is different from Wrapper<T>
it'll never work,因为Wrapper<int>
它不是封闭类型。
所以我的问题是:我怎样才能使这个铸造工作?有办法吗?