On Aug 11, 2006, at 3:53 PM, Dino Viehland wrote:
>
>
> 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#.

I think this is closer to what I want. I'm looking for clean way to  
expose an API written in Python to a C# program.

So I can do

MyDelegate ConnectToService = (MyDelegate)  
IronPython.Runtime.Operations.Ops.GetDelegate(e.Evaluate 
("RemoteAdmin.ConnectToService"), typeof(MyDelegate));

and then...

object ls = ConnectToService("localhost","LogViewer");

but now how do I get to the methods and attributes of ls?


>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:users- 
> [EMAIL PROTECTED] 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@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> users mailing list
> users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

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

Reply via email to