次のような基本的なクラス階層があると仮定します。
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>