C# 以访问者模式在节点之间传递数据

C# 以访问者模式在节点之间传递数据,c#,visitor,C#,Visitor,我在C#中有一个访问者模式,我希望能够在节点之间传递数据。例如,Visit(FunctionDeclStatement FunctionDeclStatement)调用FunctionDeclStatement.Body.Accept(this),并且需要能够将数据传递给FunctionDeclStatement.Body的Visit函数。做这件事的好方法是什么?我想我可以在访问函数中添加参数,但那会非常混乱。我不认为访问者模式是一个好办法: 在以下情况下使用访问者模式: 必须对结构(集合或更复

我在C#中有一个访问者模式,我希望能够在节点之间传递数据。例如,
Visit(FunctionDeclStatement FunctionDeclStatement)
调用
FunctionDeclStatement.Body.Accept(this)
,并且需要能够将数据传递给
FunctionDeclStatement.Body
的Visit函数。做这件事的好方法是什么?我想我可以在访问函数中添加参数,但那会非常混乱。

我不认为访问者模式是一个好办法:

在以下情况下使用访问者模式:
  • 必须对结构(集合或更复杂的结构)中分组的不同类型的对象执行类似操作

  • 需要执行许多不同且不相关的操作


  • 您违反了第二个原因,在项目之间创建了一个依赖项

    知道我可以做些什么吗,用于遍历AST?可能将其创建为一个composi,并从上一个节点调用每个节点。嗯,不过我需要遍历一个抽象语法树。访问者模式通常是遍历AST的方式。您可以遍历它并从visit函数返回一些值,然后在外部将它们关联起来,就像在实体框架中创建sql的表达式树访问者一样。