[IronPython] C# and IronPython

Dino Viehland dinov at exchange.microsoft.com
Tue Aug 7 08:46:58 PDT 2007


My guess is it depends on how often you'll be doing this and how many iterations you'll be running - or if performance is an issue for you at all.  The overhead of invoking the C# compiler is going to be much greater than asking IronPython to generate some new code in process.  But the C# code is also going to run much faster.  So depending on if you're doing compilations a lot and how long the generated code one way may be better than the other.  Another consideration is the amount of compilations you'll be doing:  IronPython will compile the code as DynamicMethod's so its collectible by the GC but the C# generated code will end up in an assembly which requires an app domain unload to go away (which means creating app domains, getting the isolation right, etc...).

If none of those are issues for you then I would suggest personal preference of which one you like more, and which API you want to interact w/ to create the code - e.g. CodeDom can be a little verbose but with Python you'll be building the strings yourself.

From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of sms rku
Sent: Monday, August 06, 2007 10:05 PM
To: Discussion of IronPython
Subject: Re: [IronPython] C# and IronPython

Thanks Dino,
In similar lines, I can also call functions from assembly, I guess...

I have read some articles related to CodeDom, using which we can compile and run code(C# or VB.NET<http://VB.NET>) at runtime.
Which one of these two (using CodeDom OR using IronPython) is the better approach if the requirement is to
     1. Use loops like for, while  etc -i,e call methods in a loop in the script
     2. use script occasionally, that means scripting is not the feature that is used regularly by the user of the application

-Thanks
sms




On 8/6/07, Dino Viehland <dinov at exchange.microsoft.com<mailto:dinov at exchange.microsoft.com>> wrote:

Yes, as long as the class is also public.  You just need to start ipy.exe in the directory where your exe's at and then do:



import clr

clr.AddReference('MyApplication')

from MyApplicationsNamespace import MyApplicationsClass  # if it's in a particular namespace

                or

import MyApplicationsClass # if it's in the global namespace

MyApplicationsClass.Main('arg1', 'arg2', 'arg3')

                Or

MyApplicationsClass.SomeOtherMethod()

                Or

x = MyApplicationsClass()

x.SomeInstanceMethod()





From: users-bounces at lists.ironpython.com <mailto:users-bounces at lists.ironpython.com> [mailto:users-bounces at lists.ironpython.com<mailto:users-bounces at lists.ironpython.com>] On Behalf Of sms rku
Sent: Sunday, August 05, 2007 10:03 PM
To: users at lists.ironpython.com<mailto:users at lists.ironpython.com>
Subject: [IronPython] C# and IronPython



I am very new to Python and IronPython.

Could you please let me know if it is possible to

Make my application [.exe] that has a static Main method and 3 other public methods defined in a class to be accessed from IronPython script?

i.e, Will I be able to create instance of the class from IronPython script?
      Will I be able to call the public methods from the script?

and also, is it possible to call the main function from the script?       [ i.e run my application]

If yes, could you please tell me how it can be done?

Thanks in advance
sms

_______________________________________________
Users mailing list
Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ironpython.com/pipermail/users-ironpython.com/attachments/20070807/65722fa7/attachment.htm 


More information about the Users mailing list