Comments (6)
new version 1.4.30.0 introduce the this keyword to manage extention methods and indexing on Context.
Thanks @TheoVC.
from expressionevaluator.
Hi
Yes I tested and it's working perfectly fine. it's the perfect solution for indexing... and for calling context methods...
var Lista = new List<Person>() { new Person { Name = "uno", Value = 1.1m }, new Person { Name = "dos", Value = 2.2m } };
var Eval = new ExpressionEvaluator();
Eval.Context = Lista;
var temp = Eval.Evaluate("10.5m + this.Sum(x => x.Value) + this[0].Value");
Actually this code is in production already... :)
from expressionevaluator.
Hello @TheoVC I will try to correct this asap. Apparently it does'nt work when list is set as context but when I tested it with list set as variable it return an int
. I just need to find why it doesnt work the same with context. I already know that indexing do not work with context so I think for now extensions methods either.
var Lista = new List<Test>() { new Test { Nombre = "uno", Valor = 1.11m }, new Test { Nombre = "uno", Valor = 2.22m }, new Test { Nombre = "uno", Valor = null }, new Test { Nombre = "dos", Valor = 3.33m } };
string script = "Lista.Sum(x => x.Nombre == \"uno\" ? (x.Valor ?? 0m) : 0m)";
ExpressionEvaluator Eval = new ExpressionEvaluator()
{
CacheTypesResolutions = true
};
Eval.Variables["Lista"] = Lista;
var result = Eval.Evaluate(script);
Eval.Variables["Lista"] = Lista;
var result = Eval.Evaluate(script); //return 3
// ***********************************************************************
public class Test
{
public string Nombre { get; set; }
public decimal? Valor { get; set; }
}
from expressionevaluator.
Hello codingSeb
maybe if the keyword "this" could be introduced, and work as in regular c#
"this" refer to the Context, por example if the Context is an Array... you could evaluate something like this:
this[0]
this[0].Name
from expressionevaluator.
maybe the "this" keyword could work exactly like a variable... a default variable that is setted every time the Context is changed and point to the Context itself
from expressionevaluator.
Yes the this
keyword idea is the solution because in C# we can not use extention methods neither inding on current object without this
keyword. Thanks for your suggestion
from expressionevaluator.
Related Issues (20)
- Add an option to disallow accessing namespaces HOT 2
- Referencing property of property can cause unwanted exception
- Syntax error of sign symbols
- Intelligente type casting
- Error message - Exception has been thrown by the target of an invocation. HOT 3
- Linq Select throws exception (ValueTuple?) issue? HOT 3
- Syntax error in Functions HOT 3
- Incorrect result. HOT 1
- Strong name HOT 1
- Ignore missing zero in numeric values
- Match function arguments considering implicit casts HOT 2
- Decimal support for math functions
- Slow EvaluateCast HOT 1
- Syntax error calling overloaded method in context object including Func<> parameter
- Link error in Unity Android il2cpp build
- Can't handle division HOT 2
- [Suggestion] AssignVariable in Script Evaluation (Not in Declraration)
- Doesn't process a IDictionary<string, object> correctly.
- Is it possible to add an operator that is both right-hand-side-only and can act as a normal one? HOT 2
- RobiniaDocs API Explorer
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from expressionevaluator.