svi*_*lta 5 c# generics polymorphism inheritance list
我收到以下错误:
错误1类型'T'不能用作通用类型或方法'ClassLibrary1.A'中的类型参数'T'。没有从“ T”到“ ClassLibrary1.ALayer”的装箱或类型参数转换。
我正在尝试应用泛型来实现具有列表和继承的动态多态性。我具有以下类结构:
public abstract class ALayer
{
public int Id { get; set; }
}
public abstract class A<T> where T: ALayer
{
public List<T> Layers;
}
Run Code Online (Sandbox Code Playgroud)
我在中产阶级的声明中出现错误
public abstract class Middle<T>:A<T>
{
public int middleAttr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我希望获得动态多态性的第三层课程
public class BLayer : ALayer
{
public int Id { get; set; }
}
public class B:Middle<BLayer>
{
public B() {
this.Layers = new List<BLayer>();
}
}
Run Code Online (Sandbox Code Playgroud)
这是什么错误?
任何帮助都感激不尽
回答 我必须明确命名约束
public abstract class Middle<T>:A<T> where T: ALayer
{
public int middleAttr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我必须明确命名对中产阶级的约束
public abstract class Middle<T>:A<T> where T: ALayer
{
public int middleAttr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4148 次 |
| 最近记录: |