次のキャストで少し問題が発生しています。
class A
{
}
class B : A
{
}
class C<T> where T : A
{
protected T property { get; set; }
}
class D : C<B>
{
}
class MainClass
{
public static void Main (string[] args)
{
C<A> x = new D();
// Error CS0029: Cannot implicitly convert type `SampleApp.D' to `SampleApp.C<SampleApp.A>' (CS0029) (SampleApp)
}
}
、、を実装するD
よりも幅が広いため、なぜこれが失敗するのかわかりません。回避策はありますか?C<A>
C<B>
B : A