I'd probably pick IDynamicMetaObjectProvider as the signifier of a dynamic 
type.  Ruby and Python types that don't implement this interface aren't "as 
dynamic" as types that do -- even built-in ones -- because they won't support 
dynamic binding from other languages.  And all user-defined types would 
implement it.

As a bonus, you can get a list of member names directly from the MetaObject 
returned by the IDMOP using something like this:

var idmop = obj as IDynamicMetaObjectProvider;
if (idmop != null) {
    var expr = System.Linq.Expressions.Parameter(typeof(object)); // The DLR 
version, not the LINQv1 version!
    var dmo = idmop.GetMetaObject(expr);
    IEnumerable<string> names = dmo.GetDynamicMemberNames();
}

You could then create simple binders and use CallSites directly to actually get 
and set the data members yourself -- and the result should support any DLR 
language and not just Python or Ruby.


Disclaimer: I haven't tested this, but it should work -- it's the basis for C# 
interop in .NET 4.0, after all.

From: ironruby-core-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Ivan Porto Carrero
Sent: Tuesday, April 28, 2009 12:59 PM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] [IronPython] Telling .NET classes from Python 
objects

Bignum I'd consider to be a primitive :)  but it would be a ruby type

I'm thinking about models / DTO's etc.  It's for a databinding context where 
you get a list of strings that then need to populate an object. And to pick the 
right conversion mechanisms I need a different strategy for a DLR type as for a 
CLR type.


On Tue, Apr 28, 2009 at 8:04 PM, Tomas Matousek 
<tomas.matou...@microsoft.com<mailto:tomas.matou...@microsoft.com>> wrote:

Would you consider Bignum to be a .NET type or Ruby type?



Tomas



From: 
users-boun...@lists.ironpython.com<mailto:users-boun...@lists.ironpython.com> 
[mailto:users-boun...@lists.ironpython.com<mailto:users-boun...@lists.ironpython.com>]
 On Behalf Of Dino Viehland
Sent: Tuesday, April 28, 2009 10:41 AM

To: Discussion of IronPython; ironruby-core
Subject: Re: [IronPython] Telling .NET classes from Python objects



Check to see if the object implements IPythonObject.



From: 
users-boun...@lists.ironpython.com<mailto:users-boun...@lists.ironpython.com> 
[mailto:users-boun...@lists.ironpython.com<mailto:users-boun...@lists.ironpython.com>]
 On Behalf Of Ivan Porto Carrero
Sent: Tuesday, April 28, 2009 10:38 AM
To: Discussion of IronPython; ironruby-core
Subject: Re: [IronPython] Telling .NET classes from Python objects



+1 for this question only I need it to implement different binding strategies 
in IronMVC.



IronRuby in Action (http://manning.com/carrero)

Winston 
Churchill<http://www.brainyquote.com/quotes/authors/w/winston_churchill.html>  
- "The best argument against democracy is a five-minute conversation with the 
average voter."

On Tue, Apr 28, 2009 at 7:35 PM, Michael Foord 
<fuzzy...@voidspace.org.uk<mailto:fuzzy...@voidspace.org.uk>> wrote:

Hello guys,

I'm continuing my work on generating pi files for the Wing IDE. Actually 
everything I encounter will be a .NET type, but in general what is the best way 
of telling if an object is a .NET type or a Python type?

Obviously for the primitives it is a moot point - but I'm talking about user 
defined classes.

Michael

--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


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



_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org<mailto:Ironruby-core@rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to