我应该如何在.NET中安排我的项目/类以避免循环依赖

时间:2009-12-12 16:46:59

标签: c# user-interface oop visualization circular-dependency

我的程序正试图在C#中绘制grammars& WPF。我有:

1 DataStructure项目,描述了应该如何可视化的树结构。树中的每个节点都与语法中的符号相关。顶部的节点定义了该非终结符号的规则。

1个描述WPF中用户控件的Drawer项目。

我需要在数据结构中引用抽屉,就像遍历树时一样,我在每个节点上调用 DataStructure.draw(); 。我还需要在抽屉项目中引用数据结构,以便我可以响应用户点击我的GUI,它将更新数据结构。

这创建了一个循环依赖,我试图使用控制器类,但我不知道:/

3 个答案:

答案 0 :(得分:3)

您应该查看访问者模式,如下所述:

http://en.wikipedia.org/wiki/Visitor_pattern

这将允许您的数据结构项目接受任何类型的访问者,包括抽屉,但实际访问者(在您的情况下是绘图逻辑)的实现单独生活,不依赖于您不想要的方式

答案 1 :(得分:2)

  

我需要参考我的抽屉   当我遍历时的数据结构   树,我称之为DataStructure.draw();

快速修复:遍历并致电HelperObject.Draw(DataStructure);

您的DataStructure不应该知道如何绘制自己,假装它必须在WinForms或其他平台中重用。 HelperObject可以是GUI的一部分。

答案 2 :(得分:0)

从对象中提取常用功能,直到第三层抽象。您可能还想查看MVC您的语法将成为模型,抽屉将成为视图,您仍然需要控制器。