[IronPython] Executing a python source from C#

Keith J. Farmer kfarmer at thuban.org
Fri Apr 29 23:13:13 CEST 2005


.NET Attributes have a similar calling mechanism in C#:
 
[FooAttribute(1, 2, A=3, B=4)]
 
To use the named parameters, I believe FooAttribute must implement A and B as properties.  Since attributes are classes, one can instantiate them, and set properties at that time.
 
Not exactly the way I think it'd work for a method, but I imagine compiler magic would happen similarly, without ambiguity.
 
blah()
bar = foo(b=3) 
blah()
 
-> 
blah();
 
fooParams = new FooParams(); 
fooParams.b = 3; 
bar = MagicFoo(fooParams);
 
blah();
 
.....
 
private struct FooParams
{
    aType a; 
    bType b; 
    cType c;
 
    public FooParams()
    {
        this.a = defaultA;
        this.b = defaultB;
        this.c = defaultC;
    }
}
 
private FooReturnType MagicFoo(FooParams fooParams)
{
    return foo(fooParams.a, fooParams.b, fooParams.c);
}
 
Disclaimer:  you don't want to know what I'm talking out of.  I'm just in it for the fun thought experiments.
... and to avoid thinking of how long it takes Eclipse to get out of swap space.

________________________________

From: users-ironpython.com-bounces at lists.ironpython.com on behalf of Ryan Davis
Sent: Fri 4/29/2005 1:48 PM
To: 'Discussion of IronPython'
Subject: RE: [IronPython] Executing a python source from C#


What I'd really like is the ability to create a .dll that we reference in other .NET apps, just as now we can write a class library in C# and use it in a VB.NET web application.
 
I have zero clue of the complexity of that task, but that'd be my ideal.  I imagine that'd be pretty hard, given the differences in function declaration semantics alone.  I'm thinking of **kwargs and default parameters, specifically.  I don't know how that would map to a C# compatible signature.  I guess for default parameters:
 
def foo(a=1, b=2, c=4):
 
you could make successive overloads that call one "master" version:
 
int foo(a)
int foo(a,b)
int foo(a,b,c)
 
but then there's no way to do the equivalent of foo(b=3) without running into ambiguity, and you end up having to do a lot more function calls than you really should.  
 
.. back to C# sloggery.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 8875 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20050429/26958eec/attachment.bin>


More information about the Ironpython-users mailing list