我目前正在为嵌入式系统开发GUI
。 (我使用GUI来描述我的应用程序,反对界面,以避免与progamatic含义混淆)
上下文
我创建了一个模拟嵌入式系统的类。我通过我设计的Connection
类进行所有通信,该类可以通过TCP / Serial或两个Connection
对象之间的虚拟连接进行通信。
所有这一切都很好,正如预期的那样,我的模拟对象和GUI
通过虚拟连接进行通信。
我有一个Diagnostic
数据包,该数据包是从device
(真实的或模拟的)发送的,并由GUI
读取。这非常适合我称之为ControllerDiagnostic
的课程。
问题
我的问题与ControllerDiagnostic
课有关。在GUI
方面,所有属性都应该是只读的(DeSerialization是通过私有字段直接反映完成的)。在模拟方面,他们显然需要是可变的。那么如何优雅地处理这个问题呢?我考虑过了:
ControllerDiagnostic
但暴露字段设置的全新类。ControllerDiagnostic
中创建所有字段,然后继承到私有嵌套类,该类为模拟类中的这些字段提供访问者。Internal
setter创建程序集。GUI
不应修改它们。friend
。这些似乎都不适合我。
由于
答案 0 :(得分:0)
您可以编写一个接口,使用getter和setter公开您的类的所有属性,以及第二个接口,它只公开所有属性的getter。然后让一个类实现两个接口并使用GUI中的getter-only接口。
代码看起来有点像这样:
public interface IReadWrite
{
string SomeString { get; set; }
}
public interface IReadOnly
{
string SomeString { get; }
}
public class TestClass : IReadWrite, IReadOnly
{
public string SomeString { get; set; }
}