也许这是一个非常基本的问题,请原谅我,如果是 - 我是C#的初学者。
我有一个WPF GUI,用于向接收器发送命令。命令是ASCII文本。现在,我将通信部分分成了一个单独的项目,因为除了GUI之外我还有使用通信方法的控制台应用程序。通信DLL在普通套接字上使用异步方法。
现在的问题是我将有一个循环依赖。 GUI需要调用通信例程来发送消息,例程需要调用GUI来显示响应。我知道我可以创建一个通信继承并绕过依赖的接口,但这是最好的方法吗?或者这是我设计中的缺陷?我基本上想要将GUI与底层通信层分离。
答案 0 :(得分:2)
您的库(dll)不应直接更新GUI。你应该让它引发事件。理想情况下,事件也将处于更高的抽象级别(“收到消息成功”而不是“成功收到数据包”,但这取决于您希望公开的库的低级功能有多少)
GUI(或控制台应用程序或完全不同的库)现在可以订阅事件并访问事件数据。 GUI作为更高层知道库,但库不应该知道GUI(或控制台应用程序)