codingseb / ExpressionEvaluator

A Simple Math and Pseudo C# Expression Evaluator in One C# File. Can also execute small C# like scripts
MIT License
595 stars 99 forks source link

Doesn't process a IDictionary<string, object> correctly. #158

Open Yazwh0 opened 1 year ago

Yazwh0 commented 1 year ago

If trying to evaluate foo.a, I have the _evaluatevariable call bask as follows:

    private void _evaluator_EvaluateVariable(object? sender, VariableEvaluationEventArg e)
    {
        if (e.Name == "foo")
        {
            e.Value = new Dictionary<string, object>()
            {
                { "a", 1 },
            };
        }
    }

The library returns an error that the Dictionary doesn't contain a function a. It would be better if the parser could handle dictionaries correctly.

Looking as the code, I think its this line here, it seems to work if I remove the obj is IDynamicMetaObjectProvider check. I assume this is something to do with ExpendoObjects? https://github.com/codingseb/ExpressionEvaluator/blob/master/CodingSeb.ExpressionEvaluator/ExpressionEvaluator.cs#L2307

Im using .net6 btw.