Greg Houston
2011-Feb-04 21:45 UTC
[Ironruby-core] How can you return the Rubified version of a CLR object back to the CLR?
Using IronRuby from C# is like a one-way street. I can take a C# object, and use it from the DLR. But I can''t enhance that object and return it back to C#. When I return it back, it looses all the Ruby joy! I''ve got an example of what I mean at http://pastie.org/1529598 How can I get a CLR object back from IronRuby that keeps all the goodness that Ruby gave it? = Greg -- Posted via http://www.ruby-forum.com/.
Tomas Matousek
2011-Feb-04 23:30 UTC
[Ironruby-core] How can you return the Rubified version of a CLR object back to the CLR?
This is by design. System.String doesn''t really have "reverse" method. IronRuby just pretends it''s there to make work more like Ruby string. So while you''re writing Ruby code you use these convenience methods, but once you''re in another context (another language, be it C#, or Python) you won''t see them. Tomas -----Original Message----- From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Greg Houston Sent: Friday, February 04, 2011 1:45 PM To: ironruby-core at rubyforge.org Subject: [Ironruby-core] How can you return the Rubified version of a CLR object back to the CLR? Using IronRuby from C# is like a one-way street. I can take a C# object, and use it from the DLR. But I can''t enhance that object and return it back to C#. When I return it back, it looses all the Ruby joy! I''ve got an example of what I mean at http://pastie.org/1529598 How can I get a CLR object back from IronRuby that keeps all the goodness that Ruby gave it? = Greg -- Posted via http://www.ruby-forum.com/. _______________________________________________ Ironruby-core mailing list Ironruby-core at rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core
Greg Houston
2011-Feb-07 15:29 UTC
[Ironruby-core] How can you return the Rubified version of a CLR object back to the CLR?
But there is an Object that is a Ruby string which does understand #reverse. Is there a way to get that object from Ruby back to the DLR? Take a look at: http://pastie.org/1537151 Using SimpleDelegator I can send back a delegate to Ruby''s string and access the reverse method. Unfortunately, since the reversed string is sent back to the CLR, its a System::String. So I couldn''t call str.reverse().reverse(). It should be possible to get back a Ruby String (or any other Ruby object) and use it from C#. Without this, you can not effectively use IronRuby to enhance a legacy C# project. It is like having a Berlin Wall between the CLR and DLR. As a visitor you can get into the DLR. But as a citizen you cant get out of the DLR! -- Posted via http://www.ruby-forum.com/.