tha*_*awg 20 c# generics abstraction
我正在开发一个抽象类,其中实现类需要实现T的列表.问题是这不起作用:
public class AbstractClass
{
public int Id { get; set; }
public int Name { get; set; }
public abstract List<T> Items { get; set; }
}
public class Container : AbstractClass
{
public List<Widgets> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我确信有一个明显的答案,我缺少,我知道我可以构建一个抽象的基类型放入列表,但是当我使用我的Linq命令来构建列表时,抽象类型(ItemBase) )与.ToList()方法不能很好地配合.我正在努力做到这么独特吗?
Nic*_*ver 33
您还需要在类上声明,以了解类型T:
public abstract class AbstractClass<T>
{
public int Id { get; set; }
public int Name { get; set; }
public abstract List<T> Items { get; set; }
}
public class Container : AbstractClass<Widgets>
{
public List<Widgets> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你也可以限制T可以,比如说它必须实现IWidgets:
public class AbstractClass<T> where T : IWidgets
Run Code Online (Sandbox Code Playgroud)
试试这个:
public class Widgets { }
public abstract class AbstractClass<T>
{
public int Id { get; set; }
public int Name { get; set; }
public abstract List<T> Items { get; set; }
}
public class Container : AbstractClass<Widgets>
{
public override List<Widgets> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你需要制作AbstractClass通用的
public class AbstractClass<T> {
...
}
public class Container : AbstractClass<Widgets> { ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36865 次 |
| 最近记录: |