zzzprojects / Eval-Expression.NET

C# Eval Expression | Evaluate, Compile, and Execute C# code and expression at runtime.
https://eval-expression.net/
Other
449 stars 86 forks source link

Unable to Execute method that requires Dictionary<string, object> parameter #138

Open JamesHill3 opened 2 years ago

JamesHill3 commented 2 years ago

I'm trying to call context.Execute() on a method that requires a Dictionary<string, object> to be passed in. When invoked, I received the following message:

No applicable member has been found for the expression

If I change the parameter passed in to something simple like a string, I'm able to call the method without issue. I've also tried to pass in a Dictionary<string, string> and receive the same message. Here's a pared down version of the code:

public class ExpressionStringLibrary : IDisposable
{
    private Dictionary<string, object> _interpolationValDict;
    private string _testString;

    // This call fails with the error described above
    public void SetInterpolationValDict(Dictionary<string, object> interpolationValDict) => _interpolationValDict = interpolationValDict;

    // This call succeeds with the error described above
    public void SetInterpolationValDictWITHSTRING(string testString) => _testString = testString;
}

Invocation:

// Get eval context
var context = new EvalContext();

// Register static helper
context.RegisterGlobalVariable("exprStrLib", new ExpressionStringLibrary(), true);

// Fails
var interpolationValues = new Dictionary<string, object>();
context.Execute("SetInterpolationValDict({0})", interpolationValues);

// Succeeds
context.Execute("SetInterpolationValDictWITHSTRING({0})", "test");

Should I be able to pass a Dictionary<string, object>?

JonathanMagnan commented 2 years ago

Hello @JamesHill3 ,

Thank you for reporting, my developer will look at it.

Best Regards,

Jon

JonathanMagnan commented 2 years ago

Hello @JamesHill3 ,

Just to give you an update, we currently have a fix under review.

If approved, it will be merged next week.

Best Regards,

Jon

JonathanMagnan commented 2 years ago

Hello @JamesHill3 ,

Sorry for the long delay on this issue,

The v4.0.88 has been released, which should fix this issue.

Let me know if everything is now working as expected.

Best Regards,

Jon