[Ironruby-core] Getting variable form IronRuby

Eduardo Blumenfeld lists at ruby-forum.com
Fri Jul 27 18:09:51 UTC 2012

Hi Alexander,

did you try to convert the strings in the hash (which are a special type 
of string called mutablestring) to a System::String.

I usually use:

a = "This is A String"
print a.class  # => String
print a.to_clr_string   # => System::String (which is the standard .net 
string type)

I would use:
hashString = ModuleClass.GetObjectHash(testObject).to_s.to_clr_string

(now hashString is a Standard C# string)

Alexander Ranger wrote in post #1070241:
> I'm using IronRuby 1.1.3 and .Net 4.
> In IronRuby I've got two files:
> 1) Module.rb
> # This file contains a class with static method GetObjectHash. The idea
> is to parse the object find all it's properties and make a hash like:
> {property_name => [property_type, property_value], ...}
> 2) Main.rb
> # This file creates several objects from different classes and calls
> GetObjectHash method.
> Then I try to execute Main.rb using C#:
> string path = "../../RubyTest.rb";
> var runtime = IronRuby.Ruby.CreateRuntime();
> var engine = runtime.GetEngine("rb");
> engine.ExecuteFile(path);
> Ok, it executes. And if in Main.rb I write the last command as
> hashString = ModuleClass.GetObjectHash(testObject).to_s

> print hashString
> it prints into the console the hash I want to see. But. I'd like not to
> use the last "print" command, and get the hashString variable into C#
> where I can use it as normal string.
> I tried to do that like:
> dynamic netString;
> engine.ExecuteFile(path).TryGetVariable("hashString", out netString);
> string hash = netString as String;
> Console.WriteLine(hash);
> But hashString remained null. (Variable name is ok, I checked it).
> Am I doing something wrong? How can I get "hashString" with stored data
> into C#?

Posted via http://www.ruby-forum.com/.

More information about the Ironruby-core mailing list