Хорошо, как вы, наверное, знаете, статическое наследование невозможно в C #. Я понимаю это, однако я застрял с развитием моей программы.
Я постараюсь сделать это как можно проще. Допустим, нашему коду необходимо управлять объектами, которые представляют самолеты в каком-то аэропорту. Требования следующие:
Есть члены и методы, которые являются общими для всех воздушных судов
Существует много типов самолетов, у каждого типа могут быть свои дополнительные методы и члены. Может быть много экземпляров для каждого типа самолета.
У каждого типа воздушного судна должно быть понятное имя для этого типа и более подробная информация об этом типе. Например, класс с именем F16 будет иметь статический член FriendlyName со значением «Lockheed Martin F-16 Fighting Falcon».
Другие программисты должны иметь возможность добавлять больше самолетов, хотя их необходимо применять для создания одинаковых статических сведений о типах самолетов.
В некоторых графических интерфейсах должен быть способ, позволяющий пользователю просматривать список доступных типов (с такими сведениями, как FriendlyName), а также добавлять или удалять экземпляры самолетов, сохраненные, скажем, в некоторый XML файл.
Таким образом, в принципе, если бы я мог принудительно применять унаследованные классы для реализации статических членов и методов, я бы обеспечил, чтобы типы самолетов имели статические члены, такие как FriendlyName. К сожалению, я не могу этого сделать.
Итак, что будет лучшим дизайном для этого сценария?