Тип наследования в словаре <ulong, BaseObject> - PullRequest
1 голос
/ 30 ноября 2009

Вот ситуация: Существует базовый класс типа BaseObject, из которого получены все остальные классы (т.е. Task : BaseObject). Существует также коллекция базовых классов типа BaseObjectCollection, которая наследуется от Dictionary<ulong,BaseObject> и некоторые другие коллекции, которые наследуются от нее (т.е. TaskCollection:BaseObjectCollection). При переборе элементов TaskCollection они отображаются как тип BaseObject. Есть ли способ заставить коллекцию «изменить» типы своих значений так, чтобы она обладала функциональностью BaseobjectCollection и при этом отображалась как Dictionary<ulong,Task> вместо Dictionary<ulong,BaseObject>

1 Ответ

1 голос
/ 30 ноября 2009

Вы должны изменить тип BaseObjectCollection, чтобы он был универсальным в типе значения, которое он будет использовать. Например:

public class BaseObjectCollection<T> : Dictionary<ulong, T>
    where T : BaseObject

Тогда вы можете использовать BaseObjectCollection<Task> и при этом быть полностью безопасным для типов.

(я бы лично использовал композицию в большинстве случаев, а не выводил новый тип из Dictionary<,>, но это другой вопрос.)

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