在派生类上更改列表特化类型

时间:2010-03-30 10:06:18

标签: c# oop polymorphism

我对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?

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

非常感谢,

萨姆

1 个答案:

答案 0 :(得分:2)

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

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

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

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