Unfortunately there isn't a great way to do this.  If 
EngineModule.GetGlobalScope were public you could create your own EM that's 
bound to locals (Or if engine.GetModuleScope were public).

That would let you use CreateLambdaUnscoped.  It returns a 
ModuleBinder<TDelegate> and the ModuleBinder returns the delegate of the type 
you want.  That lets you do:

ModuleBinder<Expression> binder = 
Engine.CreateLambdaUnscoped<Expression>(expression);
binder(engineModule)(engineModule);

but because you can't bind an EM to a new set of locals you're stuck.  You 
could call those through reflection or re-build IronPython and make them public.

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dody Gunawinata
Sent: Tuesday, September 25, 2007 12:05 AM
To: Discussion of IronPython
Subject: Re: [IronPython] replacing engine.evaluate by CreateLambda

Why not use CreateMethod instead of CreateLambda?

Dody G.
On 9/25/07, Christian Schmidt <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > 
wrote:
Hello community,

How can I replace the 3 parameter Evaluate-function from PythonEngine

  engine.Evaluate(expression, module, locals)

where expression is a string, module is a EngineModule and locals is a
IDictionary<string, object> by something like

  delegate object Expression(IDictionary<string, object> locals)
  Expression expr = engine.CreateLambda<Expression>(expression);
  ...
  expr(locals);

I've asked the same question a few days before, but didn't get an answer
so far. Is it not possible at all?

Thanks for any help.

Christian
_______________________________________________
Users mailing list
[email protected]<mailto:[email protected]>
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com



--
nomadlife.org<http://nomadlife.org>
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to