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