Thanks for the response, Jimmy. That really clears things up. So
IDynamicObject binding is in SL4 now or planned for release?

Ryan Riley

Email: ryan.ri...@panesofglass.org
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/


On Tue, Jan 5, 2010 at 2:28 AM, Jimmy Schementi <
jimmy.scheme...@microsoft.com> wrote:

> > Interesting. I thought that technique was only providing an underlying
> > "anonymous .NET base class" for binding purposes, much as IronRubyInline
> > could offer but without having to write any C#. I guess I was mistaken.
>
> You're actually correct. The IronPython clrtype feature simply allows you
> set
> the underlying CLR type that a Python class maps to. The examples that
> Harry built and Shri is currently maintaining build on top of that feature
> to provide helpers for customizing that underlying type, mainly taking the
> dynamic view of the world and make it static. This feature needs to exist
> because a CLR type is immutable, so the language needs to give user-code
> a chance to create the CLR type first.
>
> > Also, IronRuby does have types and WPF/Silverlight binding uses
> reflection
> > to late-bind to properties, right? I might be wrong on that, but I know
> you
> > can bind to an interface and get to all the properties of the
> implementation,
> > even those not defined on the interface. Couldn't that be leveraged for
> > IronRuby objects?
>
> A Ruby class does not map to a CLR type, so reflection does not work
> against
> the Ruby "view" of the world, and therefore WPF/Silverlight
> reflection-based
> binding doesn't work. Again, the methods and classes defined in Ruby are
> not
> mirrored as CLR objects, they only exist in IronRuby's data-structures. So
> reflection-based data-binding is out of the question for pure Ruby code.
>
> However, IronRuby.Builtins.RubyObject implements ICustomTypeDescriptor on
> the desktop CLR, which allows IronRuby to expose Ruby methods to data
> binding;
> I showed at RailsConf databinding a WinForms GridView to an ActiveRecord
> model.
> However, SL3 does not have this interface, so data binding in SL3 is only
> reflection-based. SL4 has IDynamicObject data-binding, so this won't be an
> issue at that time.
>
> > Actually, I've been confused on this point awhile: aren't all IronRuby
> > objects implementations of RubyObject?
>
> Sometimes =P a Ruby class that only has other Ruby class in its inheritance
> hierarchy
> will have a underlying CLR type of IronRuby.Builtins.RubyObject:
>
> >>> Object.new.GetType
> => IronRuby.Builtins.RubyObject
>
> However, if there is a CLR type in the inheritance hierarchy, the
> underlying
> CLR type will be generated in the IronRuby.Classes namespace:
>
> >>> class MyDict < System::Collections::Generic::Dictionary[String, String]
> ... end
> => nil
> >>> MyDict.new.GetType
> => IronRuby.Classes.Dictionary`2$1
>
> Note how long that MyDict.new take to be created, which is entirely
> attributed to
> the cost of generating a new CLR type.
>
> ~Jimmy
> _______________________________________________
> Ironruby-core mailing list
> 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