visitor-pattern

    0热度

    3回答

    我必须找到使用特定成员变量的类中的所有方法。 (就像eclipse中的“References”,但我想用代码实现......)我使用AST访问者模式访问FieldDeclaration以获取所有成员变量的名称和类型。我还使用访问MethodDeclaration节点的访问者模式来使用getBody()获取每个方法的内容。现在我有字段变量名称,类型和成员方法的详细信息。我想我可以在每个成员方法的内容

    3热度

    1回答

    在visitor pattern中,我希望客户端只能访问元素的获取者,而访问者应该可以访问获取者和设置者。你将如何实现它? 我不希望访问者与模型在同一个包中(已经有很多类)。 我正在考虑引入包含setter和接受方法的IWriteable接口。 有没有更好的方法? 感谢

    1热度

    2回答

    我发现了一个奇怪的行为为泛型和重载方法。看来, 泛型的重载机制不起作用: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestGeneric1 { class Program { class B

    13热度

    3回答

    我一直在寻找到与访问者模式等问题,但无法理解双重分派的访问者模式的实现。 请参阅链接 Visitor Pattern 如何在访问者模式双重分派工作?

    0热度

    1回答

    我见过用于走AST的访客模式。要使用此模式,您需要在AST节点对象上添加一个accept(visitor)方法。这个方法调用visitor.visit(self),它反过来“处理”节点以获得期望的结果(例如AST的漂亮版本)。 注意,你通常需要修改节点本身来添加方法。但是,如果AST正在使用内置对象呢? Ruby的Ripper库将AST作为数组返回。我可以添加accept方法如下: class A

    2热度

    8回答

    深度优先搜索似乎能够执行与访问者设计模式类似的功能。访问者可以根据需要定义一些数据结构并在这些结构上添加操作(以多个访问者的形式),而无需修改结构本身。访客模式的描述在wikipedia上提供。如果我们在数据结构上进行深度优先搜索(或任何其他图搜索算法,如广度优先搜索),并且每次找到结构的元素时,我们都会运行我们所需的操作,那么这似乎执行与访客。例如,考虑一棵树。即使树的某些节点具有不同的类型,我

    4热度

    6回答

    是否可以在C#中创建用户可扩展访问者模式? (最好是.net 3.5) 我在库中有一组类,我希望使用访问者模式添加功能。问题是图书馆的用户也有可能创建自己的课程。这意味着您需要创建一个特殊的访问者来接受新的类类型,但是我们的Accept方法被设置为接收基类型。我怎样才能让派生类在派生访问者中调用正确的方法。 或者有没有这样做“,如果这种类型的,这样做“的另一种方式 一些示例代码:? /* In l

    4热度

    2回答

    我正在寻找一种工具,它将采用.java源代码文件,或.class或.jar并解析它,生成一个AST(抽象语法树),以便我可以玩它。我打算创建几个访问者来运行它。 Java中是否存在这样的工具?在.NET中有一些类似的东西叫做Mono.Cecil(尽管看起来像今天它本身并不支持访问者模式)。 谢谢

    0热度

    3回答

    我正在设置一个测试组件,并试图保持它的通用性。我想使用一个通用的Visitor类,但不确定使用后代类。 实施例: public interface Interface_Test_Case { void execute(); void accept(Interface_Test_Visitor v); } public interface Interface_Test_

    4热度

    2回答

    我正在开发一个小型的基于对象的编程语言。 虽然我有点迷失在一件简单的事情上。我已经实现了几个访问者,他们收集AST的类名,类型和参数,方法头和字段。 我的问题是现在要做什么与我的方法的身体。我应该将本地变量添加到符号表吗? 它可能看起来像在第一个不错的主意,直到一个人认为,如情况: void myMethod() { int i; while (something) {