2010-03-30 56 views
1

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

請接受我的道歉,這是我的第一篇文章,因此它可能是模糊的。如果我需要提供更多信息,請告訴我。另外,我對這個問題的無知感到抱歉!

非常感謝,

山姆

+0

如果您的specificListItem繼承自GenericListitem,那麼您可以直接將其轉換爲我認爲的,但您只會獲得它們在GenericListItem中屬性的信息 – 2010-03-30 10:11:00

回答

2

你可能想使GenericClass通用:

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

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

,可能會或可能不適合 - 這真的取決於你想用做什麼列表以及這些類首先負責的內容。

+0

感謝您的回覆Jon,我沒有具體的實現來使用它,只是「大聲思考」,但你的回答對我來說是一個很好的起點。 當我有一個可行的理由做這樣的事情時,我會擴大我的查詢,否則它''歡迎來到泛型的世界'對我來說! – 2010-03-30 16:01:45