【发布时间】:2009-11-12 06:30:04
【问题描述】:
我目前正在为嵌入式系统开发GUI。 (我使用 GUI 来描述我的应用程序与界面相反,以避免与程序含义混淆)
上下文
我创建了一个模拟嵌入式系统的类。我通过我设计的 Connection 类进行所有通信,该类可以通过 TCP/Serial 或两个 Connection 对象之间的虚拟连接进行通信。
这一切都很好,正如预期的那样,我的模拟对象和GUI通过虚拟连接进行通信。
我有一个Diagnostic 数据包,它从device(真实或模拟)发送并由GUI 读取。这非常适合我称之为 ControllerDiagnostic 的类。
问题
我的问题与ControllerDiagnostic 课程有关。在GUI 方面,所有属性都应该是只读的(反序列化是通过直接在私有字段上的反射完成的)。在模拟方面,它们显然需要是可变的。那么我该如何优雅地处理呢?我考虑过:
- 创建一个模仿
ControllerDiagnostic但公开字段设置的全新类。 - 在
ControllerDiagnosticprotected 中创建所有字段,然后继承到私有嵌套类中,该类为模拟类中的这些字段提供访问器。 - 创建仅包含两个类并使用
Internal设置器的程序集。 - 将属性保留为读/写并记录
GUI不应修改它们。 - 重写 C#,这样我就可以像在 C++ 中一样使用
friend。
这些对我来说都不理想。
谢谢
【问题讨论】: