【发布时间】:2011-01-22 12:07:42
【问题描述】:
我正在研究一个抽象类,其中实现类需要实现一个 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; }
}
我确信我缺少一个明显的答案,并且我知道我可以构建一个抽象基类型以放入列表中,但是当我使用我的 Linq 命令来构建列表时,抽象type (ItemBase) 不能很好地与 .ToList() 方法配合使用。我正在尝试做的事情如此独特吗?
【问题讨论】:
-
原来我需要学习更好的研究。对所有没有得到复选标记的相同答案表示歉意。我根据它的完整性和它是顶级的事实选择了顶级的。
-
您真的希望
Items是抽象的吗? (即覆盖 get 或 set 属性?)如果您像大多数人建议的那样从AbstractClass<Widgets>扩展,Container.Items将隐含为List<Widgets>,您甚至不需要覆盖它。 -
我想保留 getter 和 setter 方法稍后被覆盖的可能性。理论上我不需要,但在实践中试图消除混乱会导致世界受到伤害。
标签: c# generics abstraction