We have a feature in v1.x which is almost exactly what you want called
CreateLambda / CreateMethod. This allows you to give the body of a function
which takes parameters and it gives you a strongly typed delegate back.
Unfortunately we removed it from v2.0 because it was getting in the way of our
refactoring work but that doesn’t mean it won’t come back at some point.
That being said we actually have enough features in place to make this work
manually. Here’s the code to do this in Python:
import clr
clr.AddReference('Microsoft.Scripting')
clr.AddReference('IronPython')
from IronPython.Hosting import PythonEngine
from Microsoft.Scripting.Utils import Function
pe = PythonEngine.CurrentEngine
a = pe.EvaluateAs[Function[object, object, bool]]('lambda x,y: x>y')
a(2,3)
a(3,2)
in C# it’d be something like:
Function<object, object, bool> func = pe.EvaluateAs<Function<object, object,
bool>>(“lambda x,y: x>y”);
bool res1 = func(2,3);
bool res2 = func(3,2);
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Bing Li
Sent: Thursday, August 09, 2007 10:27 PM
To: [email protected]
Subject: [IronPython] How to get the result of callback
Hi,guy.
I want to call python lambda expression in C#. The following is lambda
expression.
"CheckNumber = x,y:x>y"
So, I want to use C# to execute the expression, I wirte a following function
that,
The parameter expression is lambada expression, the parameters is a key-value
list. The key is the name of parameter in lambda expression 'x' and 'y'.
public object CallPythonLambda(string expression, Hashtable parameters) {
PythonEngine pe = PythonEngine.CurrentEngine;
//TODO: not implement.
}
Can anybody help me to complete the function? By the way, the version of
IronPython is 2.0A3.
Thanks a lot!
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com