C# Eval Expression Documentation

Are you using the C# Eval Expression Library for a long time, or are you currently evaluating it and want to try it? In both cases, reading that documentation and coming back from time to time is very important to ensure you can exploit our library's full potential with every one of your projects.

Methods

Our C# expression evaluator can be split into 3 categories of methods:

Execute methods is the most critical section to understand as they allow you to execute an expression directly, such as:


Compile methods are also very important to take your time to read the documentation as they allow you to compile a C# expression and re-use the delegate later:


Helper methods are different kinds of methods that either can help you for other purposes, such as the Tokenize method, or help you with your current evaluation, such as the AddMethod method:


LINQ Dynamic Methods

Since the introduction of LINQ methods, they have become a critical part of our day-to-day coding. Methods such as Where or Order By are used in every C# project nowadays. However, there is still a significant gap that still needs to be filled, which is being able to use LINQ methods with dynamic expressions:


Eval Context

In this section, you will better understand when to use and which methods use the global EvalContext. You will also learn when to create an instance of an EvalContext:

Eval Manager

In this section, you will learn about the static EvalManager and what it's for:

Options

The C# Eval library is very flexible and allows you to customize the evaluation of an expression. For example, it allows you to choose if members are case sensitives, the maximum allowed loop, and more.


Register / Unregister / IsRegistered Methods

Understanding register methods is essential as, by default, our library is unaware of existing methods from your project or referenced DLL:

Internal Dictionary

We do not recommend playing with what we consider internal dictionary. Still, since those dictionaries are public as some people have complex scenarios that are the only way to make it works, they also deserve their part in our documentation:


Contents