【问题标题】:Change List specialisation type on derived class更改派生类上的列表专业化类型
【发布时间】:2010-03-30 10:06:17
【问题描述】:

我是 OOP 的新手,想知道您能否就以下问题的最佳解决方案提供一些帮助。

public class GenericClass
{
    private List<GenericListItem> _listItems;
}

public class SpecificClass : GenericClass
{
    // I'd like to change the listItems specialisation to SpecificListItem (inherits from GenericListItem)
}

我将如何实现该系列的专业化变化?添加到集合并覆盖以指定正确的类型(SpecificListItem)时,我是否应该创建一个虚拟方法?然后在访问时将其转换为SpecificListItem?

请接受我的道歉,这是我的第一篇文章,所以可能含糊不清。如果我需要提供更多信息,请告诉我。另外,我很抱歉我对这个问题的无知!

非常感谢,

山姆

【问题讨论】:

  • 如果您的 specificListItem 继承自 GenericListitem,那么您可以直接转换它,但您只会获得 GenericListItem 中的属性的信息

标签: c# oop polymorphism


【解决方案1】:

您可能希望将 GenericClass 设为通用:

public class GenericClass<T> where T : GenericListItem
{
    private List<T> _listItems;
}

public class SpecificClass : GenericClass<SpecificListItem>
{
    // ...
}

这可能合适,也可能不合适 - 这实际上取决于您想对列表做什么,以及这些类首先负责什么。

【讨论】:

  • 感谢乔恩的回复,我没有具体的实现来使用它,实际上只是“大声思考”,但您的回复对我来说是一个很好的起点。当我有可行的理由做这样的事情时,我会扩展我的查询,否则对我来说“欢迎来到泛型世界”!
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
相关资源
最近更新 更多