В настоящее время я разрабатываю GUI
для встроенной системы. (я использую графический интерфейс для описания моего приложения, а не интерфейса, чтобы избежать путаницы с прогаматическим значением)
Контекст
Я создал класс, который имитирует встроенную систему. Все мои сообщения выполняются через разработанный мной класс Connection
, который может взаимодействовать через TCP / Serial или виртуальное соединение между двумя Connection
объектами.
Все это работает хорошо, и, как и ожидалось, мой моделируемый объект и GUI
общаются через виртуальное соединение.
У меня есть пакет Diagnostic
, который отправляется с device
(реального или смоделированного) и читается GUI
. Это хорошо вписывается в класс, который я назвал ControllerDiagnostic
.
Вопрос
Мой вопрос относится к классу ControllerDiagnostic
. Со стороны GUI
все свойства должны быть доступны только для чтения (десериализация выполняется путем отражения непосредственно в приватных полях) . На стороне симуляции они явно должны быть изменяемыми. Так как мне справиться с этим элегантно? Я рассмотрел:
- Создание совершенно нового класса, который имитирует
ControllerDiagnostic
, но предоставляет возможность установки полей.
- Создание всех полей в
ControllerDiagnostic
защищенных, а затем наследование в закрытый вложенный класс, который предоставляет средства доступа к этим полям в классе моделирования.
- Создание сборки только с двумя классами и с использованием установщика
Internal
.
- Оставьте свойства для чтения / записи и документируйте, что
GUI
не должно их изменять.
- Переписывает C #, чтобы я мог использовать
friend
так же, как и в C ++.
Ничто из этого не кажется мне идеальным.
Спасибо