[IronPython] Need help using IronPython from C#

Dino Viehland dinov at exchange.microsoft.com
Fri Aug 11 21:53:32 CEST 2006


What you're probably looking for is the CreateMethod method that hangs off of the PythonEngine.  Using this you can do:

delegate string GetEntryString();
GetEntryString es = engine.CreateMethod<GetEntryString>(@"import RemoteAdmin

ls = RemoteAdmin.ConnectToService('localhost','LogViewer')
numEntries = ls.GetNumberOfEntries()
e = ls.GetEntry(numEntries - 1)
entryString = str(e)
return entryString");


Console.WriteLine(es());

If you really do want to get a delegate to a Python function that came from a module you might want to look at Ops.GetDelegate.  If you were to create a module, execute its contents, and then get the method back out by name as an object you could pass the method to Ops.GetDelegate w/ a delegate type and create a delegate to the raw Python method that you could call from C#.

-----Original Message-----
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Jason Ferrara
Sent: Friday, August 11, 2006 12:08 PM
To: Discussion of IronPython
Subject: [IronPython] Need help using IronPython from C#

I'd like to do the equivalent of something like...

import RemoteAdmin

ls = RemoteAdmin.ConnectToService("localhost","LogViewer")
numEntries = ls.GetNumberOfEntries()
e = ls.GetEntry(numEntries - 1)
entryString = str(e)


in C#.

So I get as far as....

PythonEngine e = new PythonEngine();
# The RemoteAdmin module is in an assembly built using IronPython.Hosting.Compiler and then referenced by the C# project ClrModule clr = (ClrModule) e.Import("clr");
clr.AddReference(typeof(RemoteAdmin).Assembly)
e.Import("RemoteAdmin");

and then I'm lost.

Is there a way to make a delegate from a method that exists in the PythonEngine environment and then call the delegate from C#?

I'm aware of the Evaluate and Execute methods of PythonEngine, but I'm looking for a more direct way to call the python methods and access python object attributes, rather than building up strings to pass to Evaluate.

Thanks

- Jason


_______________________________________________
users mailing list
users at lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com



More information about the Ironpython-users mailing list