Concrete
がから派生する次のコード サンプルを検討してくださいBase
。
class Base{}
class Concrete : Base {}
static void Foo<T>() where T : Base
{
if (typeof(Concrete).IsAssignableFrom(typeof(T)))
{
var x = new Bar<T>(); // compile error on this line
}
}
class Bar<T> where T : Concrete
{
}
コンパイル エラーが発生している行では、ジェネリック引数が型に割り当て可能であることを既に確認していますConcrete
。したがって、理論的には、Bar クラスのインスタンスを作成する方法があるはずです。
コンパイルエラーを取り除く方法はありますか? 議論を投げかける方法が思い浮かびません。
コンパイル エラーの全文:
エラー 14 型 'T' は、ジェネリック型またはメソッド 'Bar' の型パラメーター 'T' として使用できません。'T' から 'Concrete' への暗黙的な参照変換はありません。