我收到以下错误:
错误1类型'T'不能用作类型参数'T' 泛型类型或方法'ClassLibrary1.A'。没有拳击或 类型参数从'T'转换为'ClassLibrary1.ALayer'。
我正在尝试应用泛型来实现带有列表和继承的动态多态。我有以下类结构:
public abstract class ALayer
{
public int Id { get; set; }
}
public abstract class A<T> where T: ALayer
{
public List<T> Layers;
}
我在中产阶级声明中得到错误
public abstract class Middle<T>:A<T>
{
public int middleAttr { get; set; }
}
这是我想要获得动态多态性的第三层课程
public class BLayer : ALayer
{
public int Id { get; set; }
}
public class B:Middle<BLayer>
{
public B() {
this.Layers = new List<BLayer>();
}
}
这是什么错误?
非常感谢任何帮助
答案 我必须明确命名约束
public abstract class Middle<T>:A<T> where T: ALayer
{
public int middleAttr { get; set; }
}
答案 0 :(得分:2)
我必须在Middle class上明确命名约束
public abstract class Middle<T>:A<T> where T: ALayer
{
public int middleAttr { get; set; }
}