LINQ表达式树可以做什么最大化?
可以定义一个类吗? 一个方法怎么样,包含所有声明的名称,修饰符,参数类型和返回类型?
程序是否必须自己定义树?是否可以从给定的C#文件生成树?
在哪里可以获得有关编写基本到高级表达式树和表达式树访问者的资源? (文章和视频会很棒)
感谢那些能够提供帮助的人......
答案 0 :(得分:15)
在C#3中,表达式树可以表示表达式。由此得名。它们进一步局限于C#表达式的子集 - 没有赋值表达式,没有涉及指针类型的表达式等等。
在随C#4提供的库中,我们已将表达式树 library 扩展为也支持语句树。但是,C#4不会自动将statement-lambda转换为“语句树”。
这是一个显而易见且有用的功能,我们根本没有时间去参加C#4。我们将在假设的未来版本中考虑它。如果你有一个非常棒的语句树用户场景,我很乐意听到它。
对所有声明树的明显进一步扩展,它将表示类声明,结构声明等。在C#语言和表达式树库之间具有完全同源性将是非常棒的。它将启用各种有趣的元编程方案。但这不会很快发生,所以不要抱有希望。这更像是我可能永远不会发生的长期梦想。
答案 1 :(得分:1)
表达树:
http://www.interact-sw.co.uk/iangblog/2005/09/30/expressiontrees
http://www.davidhayden.com/blog/dave/archive/2006/12/18/ExpressionTrees.aspx
http://msdn.microsoft.com/en-us/library/bb397951.aspx
http://community.bartdesmet.net/blogs/bart/archive/2006/11/22/Getting-started-with-C_2300_-3.0-Expression-Trees.aspx
http://blah.winsmarts.com/2006/05/23/demystifying-c-30--part-7-expression-trees.aspx
访客模式:
http://www.dofactory.com/Patterns/PatternVisitor.aspx
http://en.wikipedia.org/wiki/Visitor_pattern