Изменить тип специализации списка на производном классе - PullRequest
1 голос
/ 30 марта 2010

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

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

1 Ответ

2 голосов
/ 30 марта 2010

Возможно, вы захотите сделать универсальный класс GenericClass:

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...