首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计方法

设计方法
EN

Stack Overflow用户
提问于 2012-06-11 16:23:46
回答 1查看 111关注 0票数 3

我需要在以下设计方面的帮助。基本上,我有一个主表单,它初始化一个名为Settings的类。当用户单击名为CommunicationsSetupForm的窗体时,Main将在其ctor中传递设置类。在此CommunicationsSetupForm中,用户可以更改诸如通信类型(RS232、RS485、TCP/IP等)、波特率、COM端口名称等设置。

一旦完成,焦点就会回到主表单上。从这里,用户可以发送一个包到相应的硬件,例如一个运行的包。该数据包是通过Init数据包类(它还接受其CTOR中的设置类)而非InitalizePacket调用PacketGenerate (后者也在CTOR中传递Settings类)而非最终通过来自PacketGenerate的事件调用CommunicationMediator。CommunicationMediator实际上是在主窗体中初始化的,并且还通过它的CTOR接受Settings类。下面是一张正在发生的事情的图片,我希望它能使情况更清楚一点:

我的问题是,CommunicationMediator了解设置类是否已经更改的最佳方法是什么。例如,用户现在已经将波特率从9600更改为300。从我的研究中,我读到了关于“深度复制”的文章,以及实现它的一种方法:如何在.NET (特别是C#)中对对象进行深度复制?。使用这种技术,我可以创建一个名为OldSettings的类的非引用副本,并在每次需要通过硬件发送一些东西时将其与当前的Settings类进行比较。如果OldSettings != Settings,则首先更改硬件上的设置。

如果我以这种方式实现,如何将旧的设置类与当前的设置类进行比较?这是CommunicationMediator检查设置类是否已更改的最佳方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-11 16:25:13

您的Settings类可以实现INotifyPropertyChanged。这是框架中的一个标准接口,如果类中的属性发生了更改,它允许您订阅通知,并且比每次深度复制和比较要简单得多。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10983971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档