ExpressionEvaluator icon indicating copy to clipboard operation
ExpressionEvaluator copied to clipboard

Is it possible to find which variables were modified during expression evaluation?

Open mercurial-moon opened this issue 1 year ago • 1 comments

Hi,

For an expression like a = b * c we know that a would be modified after evaluating the expression. Is there a mechanism in ExpressionEvaluator which tells us that a will/could be modified after evaluating the expression.

ExpressionEvaluator has a PreEvaluateVariable event but that is fired for all variables in the expression, i`m looking to find the variables on the left hand side of the expression.

This could be done in string processing but was hoping if there is a better way where I could have the expression engine to tell me.

mercurial-moon avatar Oct 27 '24 13:10 mercurial-moon

Hi @mercurial-moon. Thanks for your issue.

For now there is no event for variable assignation equivalent to PreEvaluateVariable or EvaluateVariable. As I do not have so much time to continue developping ExpressionEvaluator I don't know when I could add this.

But for your case, there is maybe an alternative way by inheritance.

using CodingSeb.ExpressionEvaluator;

public class YourEvaluator : ExpressionEvaluator
{
    protected override void AssignVariable(string varName, object value)
    {
        // Do What you want here for pre assignation 
        
        // Here we redo what ExpressionEvaluator would do
        base.AssignVariable(varName,value)

      // Do What you want here for postassignation 
}

I hope it helps

codingseb avatar Oct 30 '24 05:10 codingseb