我的程序正试图在C#中绘制grammars& WPF。我有:
1 DataStructure项目,描述了应该如何可视化的树结构。树中的每个节点都与语法中的符号相关。顶部的节点定义了该非终结符号的规则。
1个描述WPF中用户控件的Drawer项目。
我需要在数据结构中引用抽屉,就像遍历树时一样,我在每个节点上调用 DataStructure.draw(); 。我还需要在抽屉项目中引用数据结构,以便我可以响应用户点击我的GUI,它将更新数据结构。
这创建了一个循环依赖,我试图使用控制器类,但我不知道:/
答案 0 :(得分:3)
您应该查看访问者模式,如下所述:
http://en.wikipedia.org/wiki/Visitor_pattern
这将允许您的数据结构项目接受任何类型的访问者,包括抽屉,但实际访问者(在您的情况下是绘图逻辑)的实现单独生活,不依赖于您不想要的方式
答案 1 :(得分:2)
我需要参考我的抽屉 当我遍历时的数据结构 树,我称之为DataStructure.draw();
快速修复:遍历并致电HelperObject.Draw(DataStructure);
您的DataStructure不应该知道如何绘制自己,假装它必须在WinForms或其他平台中重用。 HelperObject可以是GUI的一部分。
答案 2 :(得分:0)
从对象中提取常用功能,直到第三层抽象。您可能还想查看MVC您的语法将成为模型,抽屉将成为视图,您仍然需要控制器。