Я хочу создать расширяемый пакет, который я пишу, который имеет классы Topology, Node & Relationship. Идея состоит в том, что эти базовые классы будут иметь различные методы, необходимые для базовых методов обхода графа и т. Д. Затем я хотел бы иметь возможность использовать это повторно, расширяя пакет.
Например, в базовых требованиях может быть указано Отношение с parentNode и childNode. Топология будет иметь список узлов и список отношений. В топологии должны быть такие методы, как FindChildren (int глубина).
Тогда использование будет расширять их так, чтобы можно было добавить дополнительные атрибуты для Узла и Отношений и т. Д.
ВОПРОС - Каков наилучший подход для упаковки и представления классов / методов базового уровня? (это похоже на пользовательскую коллекцию, но с несколькими аспектами). Будут ли в игру вступать следующие понятия:
- Интерфейсы - было бы неплохо иметь ITopology, INode и т. Д., Или это не требуется, поскольку пользователь все равно будет расширять эти классы?
- Абстрактные классы - будут ли базовые классы абстрактными классами
- Custom Generic Collection - поможет ли какой-то подход с использованием этой концепции (но как это будет работать, если есть 3 разных класса)