Я относительный новичок на С#, хотя я компетентный программист, и я признаюсь, что я совершенно смущен относительно того, хорошо ли писать пользовательские коллекции. Так много людей, кажется, говорят "не надо", но для С# существует целый набор базовых классов.
Вот мой конкретный случай. У меня есть приложение для расписания. Как часть этого, у меня есть класс обслуживания, а класс службы содержит коллекции вещей service-y, такие как ссылки маршрута. Ссылка маршрута сама по себе является настраиваемым классом:
public class Service
{
public RouteLinks RL; // A collection of RouteLink types
...
}
public class RouteLink
{
public string FirstStopRef;
public string LastStopRef;
public Tracks RouteTrack; // Another collection, this time of Track types
}
До сих пор я рассматривал использование словаря как типа для RouteLinks, потому что мне нужно иметь возможность ссылаться на них. Это в принципе. Тем не менее, процесс добавления RouteLink в коллекцию RouteLinks включает проверку того, существует ли она там, или расширяет ли она существующую ссылку маршрута, или... И для этого мне нужна пользовательская функция добавления.
Так почему же такая плохая практика создает пользовательские классы коллекций? Почему я не должен просто наследовать CollectionBase или DictionaryBase?
Я должен добавить, что я передаю этот код из VBA [пожалуйста, не стреляйте в меня:)], и там я должен был реализовать пользовательские коллекции.