Это может быть выход из левого поля, сумасшедший, но мне просто нужно спросить, прежде чем я продолжу реализовывать этот огромный набор классов.
По сути, я пишу парсер двоичных сообщений, который декодирует определенный военный формат сообщения в объект. Проблема в том, что существуют буквально сотни различных типов сообщений, и они почти не имеют ничего общего друг с другом. Поэтому я планирую реализовать это, создав сотню различных объектов.
Однако, несмотря на то, что атрибуты сообщения не имеют ничего общего, метод их декодирования довольно прост и соответствует шаблону. Поэтому я планирую написать генератор кода для генерации всех объектов и логики декодирования для каждого типа сообщений.
Что было бы действительно приятно, так это если бы был какой-то способ динамического создания объекта на основе некоторой схемы. Это не обязательно должен быть XML, но с XML довольно легко работать.
Возможно ли это в C #?
Я бы хотел, чтобы интерфейс выглядел примерно так:
var decodedMessage = MessageDecoder.Decode(byteArray);
Где MessageDecoder определяет тип сообщения и возвращает соответствующий объект. Вероятно, он вернет интерфейс, который реализует свойство MessageType или что-то в этом роде.
По сути, мне интересно, есть ли способ иметь один объект с именем Message, который реализует свойство MessageType. И затем, в зависимости от MessageType, объект Message преобразуется в любой тип сообщения, поэтому мне не нужно тратить время на создание всех этих типов сообщений.