次のような基本的なクラス階層があると仮定します。
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>
コンパイラは、私がやろうとしていることを理解していません (とを区別できないようですMyStruct<T2>
)。
内から に変換MyStruct<X>
するにはどうすればよいですか?MyStruct<Y>
MyStruct<T>