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 <[email protected]> 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 <[email protected]> > 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: [email protected] [mailto:users- > >> [email protected]] On Behalf Of Alex News > >> Sent: Tuesday, April 14, 2009 7:32 AM > >> To: [email protected] > >> 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 > >> [email protected] > >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > > > _______________________________________________ > > Users mailing list > > [email protected] > > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >
_______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
