假设我有一个像这样的基本类层次结构:
public abstract class BaseClass { }
public class X : BaseClass { }
public class Y: BaseClass { }
我有一个这样的通用结构:
public struct MyStruct<T>
where T: BaseClass, new()
{
}
然后我可以创建一个实例,如下所示:
var x = new MyStruct<X>();
现在我想在 上提供一个操作(构造函数或转换运算符)MyStruct
,它允许我转换MyStruct<X>
为MyStruct<Y>
:
MyStruct<Y> my = new MyStruct<X>();
当我编写如下构造函数时:
public struct MyStruct<T>
where T: BaseClass, new()
{
public MyStruct(MyStruct<T2> value)
where T2: BaseClass, new()
{
...
}
}
编译器不明白我要做什么(似乎无法区分MyStruct<T>
and MyStruct<T2>
)。
我如何从内部转换MyStruct<X>
为?MyStruct<Y>
MyStruct<T>