1

次のような基本的なクラス階層があると仮定します。

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>

4

3 に答える 3