deniszykov / csharp-eval-unity3d

C# Expression Parser for Unity3D
Other
204 stars 25 forks source link

return void, set field value #2

Open friuns2 opened 7 years ago

friuns2 commented 7 years ago

does it support any those?

var typeResolver = new KnownTypeResolver(typeof(Test), typeof(Console));
var test = new Test();
var exprTree = CSharpExpression.Evaluate<Test,int>("test.te=23", test,typeResolver:typeResolver);
throws error Unexpected symbol '='

var exprTree = CSharpExpression.Evaluate<System.void>("Console.Write(123)",typeResolver:typeResolver);
will not work because cannot use System.void
deniszykov commented 7 years ago

Hi. It is only support expressions. "a=b" is a statement.

"void" returning expressions currently are not supported too. I know it will be bit ugly, but you can wrap "Write" with your method which return something.

Mutation could be done with methods - "test.SetValue(23)"

friuns2 commented 7 years ago

ok thanks, too bad statements would be usefull :)

catdawg commented 6 years ago

I really need this feature, so before I dig into the code to figure out how to add it, is there a strong reason why this is not supported? Thanks!

deniszykov commented 6 years ago

I really need this feature

Which one?

  1. Action expressions (void return type)
  2. Statements
catdawg commented 6 years ago

Sorry should have been clearer 😅 the void expressions.

deniszykov commented 6 years ago

Actually not much. New methods for CSharpExpression a few changes in Binder and AotCompiler. I could try to implement it tomorrow.

On the other hand, statements is a huge feature and in the near future I do not plan to implement it.

catdawg commented 6 years ago

If you could implement this, I would be extremely likely to use your lib :) Thanks for the fast responses btw!

deniszykov commented 6 years ago

I have updated NuGet package to version 2.2.0 where Action delegates are supported. Or you could build from sources 4c49d86600db8ead99c21bc2debdbd4dcbf1aa1c. Or wait for Unity Asset Store update.

catdawg commented 6 years ago

Cool! I'll try it out, thanks!