我有一个带有以下签名的基类:
abstract class BaseClass<I, S>
然后我定义一个具有以下签名的类来扩展BaseClass
:
class ExtendedClass<I> : BaseClass<I, int>
因此,ExtendedClass
设置S
的{{1}}泛型类型与BaseClass
参数。我正在使用以下类:
int
这会引发以下错误:
无法将类型ExtendedClass隐式转换为BaseClass
一些简化的背景:
BaseClass<I, S> anInstance = new ExtendedClass<I>();
答案 0 :(得分:4)
您应该为参考指定S
和I
。如果您不在班级范围内:
BaseClass<SomeClass, int> anInstance = new ExtendedClass<SomeClass>();
如果你在班级范围内
BaseClass<I, int> anInstance = new ExtendedClass<I>();
S
是BaseClass
上下文中为泛型类型指定的名称。它不存在于它之外,当你定义引用时,你必须给出具体的类型。
答案 1 :(得分:3)
第二个类型参数必须设置为int
:
BaseClass<I, int> anInstance = new ExtendedClass<I>();
显然,I
也必须是泛型类中的具体类型或其他类型参数。