2010-03-30 4 views
1

Я довольно новичок в ООП и задался вопросом, можете ли вы предоставить некоторую помощь по лучшему решению следующего.Тип специализации списка изменений в производном классе

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 при доступе к нему?

Примите мои извинения, это мой первый пост, поэтому он может быть неопределенным. Если мне нужно предоставить больше информации, пожалуйста, дайте мне знать. Кроме того, мне жаль мое невежество в этом вопросе!

Большое спасибо,

Sam

+0

Если ваш specificListItem наследуется от GenericListitem, то вы можете напрямую его использовать, я думаю, но вы получите информацию только о свойствах, которые являются их в GenericListItem. –

ответ

2

Вы можете сделать GenericClass родовое:

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

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

Это может или не может быть целесообразным - это действительно зависит от того, что вы хотите сделать с список, и на что эти классы отвечают в первую очередь.

+0

Спасибо за ответ. Jon, у меня нет конкретной реализации, чтобы использовать это для и было действительно просто «вслух», но ваш ответ - отличная отправная точка для меня. Когда у меня есть разумная причина сделать что-то подобное, я разберу свой запрос, иначе он «добро пожаловать в мир дженериков» для меня! –

Смежные вопросы