考虑以下代码示例,其中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”到“具体”的隐式引用转换。