假设我有一个像这样的基本类层次结构:
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>