是否可以创建自定义Expression类?如果是这样,有没有人举任何例子?从框架抽象Expression类继承会带来一个问题,因为它的构造函数需要一个ExpressionType参数,这是一个框架枚举类型-我显然不能自定义它!

有任何想法吗?

最佳答案

在.net 3.5中,您无法执行此操作,因为Expression构造函数接受ExpressionType枚举值,并且无法向枚举添加新的节点类型。

您也不能重载现有节点类型,因为您不能从任何“叶类”(如BinaryExpression)继承,因为它们都是密封的。

根据MSDN文档,只要您覆盖“ Reduce”方法并使用节点类型ExpressionType.Extension,就可以在CLR v4中执行此操作。

08-06 19:18