是否有任何免费的C#组件类为C#代码提供从文件加载IronRuby代码的方法?

时间:2012-03-28 07:08:18

标签: c# ironruby

我在这里学到了stackoverflow,您可以轻松实现Win表单的c#和Web浏览器控件中加载的javascript之间的双向访问。然后让我问你是否可以使用任何免费的C#组件在C#和IronRuby之间进行类似的双向访问?虽然我搜索了如何在.net平台中对两种语言进行双向访问,但是它们中的任何一种都没有像我先描述的那样简单。

2 个答案:

答案 0 :(得分:2)

IronRuby库让您可以做到这一点。只需引用IronRuby.dll和IronRuby.Libraries.dll程序集,添加using IronRuby;然后就可以执行以下操作:

var engine = Ruby.CreateEngine();
var scope = engine.ExecuteFile(fileName);

然后,您可以查询scope某些变量,或获取所有变量的列表。

答案 1 :(得分:1)

@svick是对的,但我只想详细说明数据从C#流向IronRuby并返回的示例。

var engine = Ruby.CreateEngine();
engine.ExecuteFile("../../test.rb");
dynamic ruby = engine.Runtime.Globals;
dynamic hello = ruby.Hello.@new("Hello from Ruby!");
hello.set_text(textBox1);

和test.rb中的Ruby代码

class Hello
  def initialize text
    @text = text
  end

  def set_text text_box
    text_box.Text = @text
  end
end

PS。从http://ironruby.net/download/安装IronRuby后,出于某种原因,只能在C:\ WINDOWS \ Microsoft.NET \ assembly \ GAC_MSIL \中找到IronRuby.dll,IronRuby.Libraries.dll和Microsoft.Scripting.dll DS。