[IronPython] **kwargs and __getattr__ handling in csharp functions and classes?

Dino Viehland dinov at microsoft.com
Tue Apr 14 11:31:50 PDT 2009


I think it might be just "Dynamic" in 2.0.

From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Curt Hagenlocher
Sent: Tuesday, April 14, 2009 11:05 AM
To: Discussion of IronPython
Subject: Re: [IronPython] **kwargs and __getattr__ handling in csharp functions and classes?

It should be Microsoft.Scripting.DynamicObject in 2.0.
On Tue, Apr 14, 2009 at 11:02 AM, Alex News <anleewxs at gmail.com<mailto:anleewxs at gmail.com>> wrote:
Current IronPython = 2.01?  I have Microsoft.Scripting.Core
referenced, and can't find DynamicObject.  There is an
Microsoft.Scripting.Actions.IDynamicObject, and a
Microsoft.Scripting.Runtime.IOldDynamicObject.  I'm sure I'm missing
something very basic.

We are using .net 2.0.50727 SP1




On Tue, Apr 14, 2009 at 12:12 PM, Curt Hagenlocher <curt at hagenlocher.org<mailto:curt at hagenlocher.org>> wrote:
> In current versions of IronPython, DynamicObject is in
> Microsoft.Scripting.Core as Microsoft.Scripting.DynamicObject.  In .NET 4.0
> System.Core, the same class will be called System.Dynamic.DynamicObject.  (I
> just noticed this naming discrepancy today, and I think we should probably
> move it to at least Microsoft.Dynamic for the 2.6 release.)
>
> On Tue, Apr 14, 2009 at 8:31 AM, Alex News <anleewxs at gmail.com<mailto:anleewxs at gmail.com>> wrote:
>>
>> Much appreciated, I will give that a try.  In what namespace is
>> DynamicObject declared?  (I assume the required assemblies are already
>> referenced if I'm pulling in IronPython).
>>
>> Thanks again,
>> Alex
>>
>>
>> On Tue, Apr 14, 2009 at 11:16 AM, Dino Viehland <dinov at microsoft.com<mailto:dinov at microsoft.com>>
>> wrote:
>> > For kwargs you need to decorate the function w/ a ParamDictionary
>> > attribute such as:
>> >
>> > public void __init__(CodeContext/*!*/ context, object o,
>> > [ParamDictionary] IAttributesCollection kwArgs)
>> >
>> > For __getattr__ IronPython will recognize a special name
>> > "GetBoundMember" method such as:
>> >
>> > using System;
>> > using System.Runtime.CompilerServices;
>> >
>> > public class Foo {
>> >    [SpecialName]
>> >    public object GetBoundMember (string name) {
>> >        return name;
>> >    }
>> > }
>> >
>> >
>> > You can also do "GetCustomMember" which is like __getattribute__.  But
>> > for this one what you really want to do is inherit directly from the
>> > DynamicObject class and override TryGetMember.  Then it'll work not only w/
>> > Python but w/ other DLR based languages as well (e.g. C#, VB.NET<http://vb.net/>, IronRuby,
>> > etc...).
>> >
>> >
>> >> -----Original Message-----
>> >> From: users-bounces at lists.ironpython.com<mailto:users-bounces at lists.ironpython.com> [mailto:users-<mailto:users->
>> >> bounces at lists.ironpython.com<mailto:bounces at lists.ironpython.com>] On Behalf Of Alex News
>> >> Sent: Tuesday, April 14, 2009 7:32 AM
>> >> To: users at lists.ironpython.com<mailto:users at lists.ironpython.com>
>> >> Subject: [IronPython] **kwargs and __getattr__ handling in csharp
>> >> functions and classes?
>> >>
>> >> I would like to write some functions and classes in csharp that
>> >> interact nicely python.  I would like to write a function that can
>> >> respond to keyword arguments, and a class that can dynamically resolve
>> >> __getattr__.
>> >>
>> >> For the function I tried creating a function that takes a
>> >> IronPython.Runtime.PythonDictionary, but did not work.  For a class I
>> >> tried creating a function that have a method __getattr__, but that
>> >> failed too.
>> >>
>> >> I see there is a IronPython.Runtime.PythonFunction and some other
>> >> interesting classes in the Runtime, but it is not apparent exactly how
>> >> I could use them.
>> >>
>> >> I can, luckily, fudge much of what I want to do by creating small
>> >> python classes and functions in python to proxy the values to
>> >> underlying csharp classes.  However thing would be cleaner if I could
>> >> do it directly in csharp.
>> >>
>> >> Thanks in advance for any suggestions.
>> >>
>> >> Alex
>> >> _______________________________________________
>> >> Users mailing list
>> >> Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>
>> >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>> >
>> > _______________________________________________
>> > Users mailing list
>> > Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>
>> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>> >
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
_______________________________________________
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/20090414/d92ed799/attachment-0001.htm>


More information about the Users mailing list