Fork me on GitHub

Expressions

An expression calculates a part of the result. This allows you to add and remove expressions when your requirements change easily.

Inline Expressions

Inline expressions are defined directly as lambda expressions:

Note that you cannot specify a method because a lambda expression is required.

The expression gets access to the question and the parameter. If the question doesn't have a parameter then Missing.Value is passed as the parameter.

Expression Classes

Normally, your expressions are a bit more complex and writing them directly into the solution definition is not feasible. Therefore, you can pass an instance of a class implementing IExpression instead of a lambda expression:

You get access to the question so that you can create different expressions based on information from the question.

The parameter is passed to the Evaluate method on the expression:

Again, for parameter-less questions Missing is used as the type of the paramter and Missing.Value as the value.

The text you specify in the Describe method is used when logging is enabled.