With .net 3.5 you cannot do this because the expression constructor takes on the value of an ExpressionType enumeration, and you cannot add new node types to the enumeration.
You also cannot overload the existing node type, because you cannot inherit any of the "leaf classes" (for example, BinaryExpression), because they are all sealed.
According to the MSDN docs, it looks like you can do this in CLR v4 as long as you override the Reduce method and use the ExpressionType.Extension node type.
source share