如何避免WPF客户端 - 服务器应用程序中的依赖循环?

时间:2016-09-14 12:23:08

标签: c# .net wpf

您好我是这个论坛的新手,我正在寻求帮助。 我正在开发一个WPF应用程序,本质上该应用程序允许用户从文件系统中选择文件并将完整路径发送到python服务器以及我必须实现的其他类型的通信。

我将WPF应用分为三部分。 WPF GUI本身,一组处理客户端 - 服务器通信的控制器和一个称为“控制器访问层”的第三个组件,用于管理GUI和控制器之间的整个数据流。

我不希望GUI和Controller直接通信但具有中间结构。在Visual Studio中,我有三个项目称为GUI,Client,CAL(Contoller访问层)。 GUI和客户端都引用CAL,因为它们都需要CAL对象,但为了使CAL访问控制器和GUI我应该从这里引用它们。

如果我尝试在GUI和客户端添加对CAL的引用,则会出现依赖性错误。我已经读过这个问题及其背后的糟糕设计,所以我想知道我的设计是否在概念上是正确的,以及我如何在这种情况下避免依赖循环。

public class CAL
{
    // CAL Object shared between projects
    public static CAL ControlAccessLayer { get; } = new CAL();
    Dictonary<string,BaseController> ListController {get; set;}
 }

上面的代码是CAL类,因为你可以看到这个类有一个BaseController的Dictionary对象。我不确定的另一件事是我在项目之间共享CAL对象的方式,基本上我设置了一个可以从其他两个项目访问的静态CAL对象。 我不是一个专业的设计师和这个领域的新手,我想有一些建议。 谢谢你的帮助:)

1 个答案:

答案 0 :(得分:1)

将两个项目中使用的组件移动到单独的项目(xyz.common)。例如,如果实现应该在CAL中,那么在客户层中使用的公共项目中定义一个接口,并在CAL项目中实现接口。

我们如何在当前项目中执行此操作,我们还在客户端和后端共享一些对象。