[IronPython] How to get the result of callback

Dino Viehland dinov at exchange.microsoft.com
Fri Aug 10 08:22:15 PDT 2007


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: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Bing Li
Sent: Thursday, August 09, 2007 10:27 PM
To: users at lists.ironpython.com
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!



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ironpython.com/pipermail/users-ironpython.com/attachments/20070810/7b23d600/attachment.htm 


More information about the Users mailing list