[Ironruby-core] Passing a .NET object to the RubyEngine...
Cory Foy
Cory.Foy at microsoft.com
Fri Sep 28 11:02:28 EDT 2007
That's what I was thinking too. Here's what I put together:
class Program
{
static void Main(string[] args)
{
RubyEngine re = RubyEngine.CurrentEngine;
IScriptModule scriptModule = ScriptDomainManager.CurrentManager.Host.DefaultModule;
string script = "require 'CSIronRuby'; puts 'Hello, ' + var.GetName.to_s + ' World!'";
MyName name = new MyName();
scriptModule.SetVariable("var", name);
re.ExecuteCommand(script, scriptModule);
Console.ReadLine();
}
}
public class MyName
{
public string Name = "Cory";
public string GetName()
{
return Name;
}
}
For some reason, I was having difficulty getting it to output just Name - I just didn't want to tear into it.
Cory
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Stefan Hüttenrauch
Sent: Friday, September 28, 2007 10:49 AM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] Passing a .NET object to the RubyEngine...
Nice stuff Eric,
Have you already passed real objects back and forth between Ruby and C#?? That would be the real cool stuff. I will hack a little tomorrow I guess, but if you have any tips already, that would be great.
Thanks
Stefan
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Eric Nicholson
Sent: Freitag, 28. September 2007 15:40
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] Passing a .NET object to the RubyEngine...
Whoops ... missing some semicolons there. Can you tell I spend most of my day in VB.NET<http://VB.NET>?
On 9/28/07, Eric Nicholson < enicholson at gmail.com<mailto:enicholson at gmail.com>> wrote:
Here's a quick example:
RubyEngine re = RubyEngine.CurrentEngine;
IScriptModule mod = ScriptDomainManager.CurrentManager.Host.DefaultModule
string script = "puts 'Ruby and ' + var.to_s + ' together at last'"
mod.SetVariable("var", ".NET")
re.ExecuteCommand(script, mod);
A couple things to note:
1. var.to_s is necessary because I don't think IR is coercing CLR Strings to Ruby Strings yet.
2. I'm not sure why you need to pass in the default module to ExecuteCommand, but I wasn't able to evaluate the variable in Ruby otherwise.
-Eric
On 9/28/07, Phil Haack <haacked at gmail.com<mailto:haacked at gmail.com>> wrote:
Hi All, I posted some code for calling IronRuby code I found in the mailing list onto the wiki.
http://ironruby.rubyforge.org/wiki/wiki.pl?ExecutingIronRubyFromCSharp
RubyEngine re = RubyEngine.CurrentEngine;
string script = "s = 'let us get started'" + Environment.NewLine
+ "i = s.length");
re.ExecuteCommand(script);
The only thing is, I don't know how to pass a .NET object to the context of the RubyEngine so it can be called from within the script. I'd like to update the example with that.
Any help?
Phil
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org <mailto:Ironruby-core at rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/ironruby-core/attachments/20070928/e69beed1/attachment-0001.html
More information about the Ironruby-core
mailing list