现在的位置: 首页 > 综合 > 正文

在C#中调用Ruby代码

2013年01月12日 ⁄ 综合 ⁄ 共 1513字 ⁄ 字号 评论关闭

Here is some code that we put together for the ASP.NET MVC team. They used it to prototype their IronRuby integration that we showed at Tech Ed 2008. Here's how you can execute a simple file:

  1. using Microsoft.Scripting.Hosting;   
  2.   
  3. var runtime = ScriptRuntime.Create();         
  4. runtime.ExecuteFile("MyController.rb")  

Where MyController.rb contains:

  1. class MyController   
  2.   def do_foo a, b   
  3.     puts a, b   
  4.   end  
  5. end  

This will define the MyController class and the do_foo method. Here's some code that instantiates the controller and retrieves the action method:

  1. var engine = runtime.GetEngine("Ruby");   
  2. // TODO: should check that the values are identifiers   
  3. var code = String.Format("{0}.new.method :{1}""MyController""do_foo");   
  4. var action = engine.CreateScriptSourceFromString(code).Execute();  

The action variable now holds on do_foo method bound to the controller instance. You can invoke it by:

  1. var result = engine.Operations.Call(action, 1, 2);  

The definitive reference is the DLR hosting specification.

抱歉!评论已关闭.