在C#中调用Ruby代码

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:

view plain copy to clipboard print ?
  1. using Microsoft.Scripting.Hosting;   
  2.   
  3. var runtime = ScriptRuntime.Create();         
  4. runtime.ExecuteFile("MyController.rb")  

Where MyController.rb contains:

view plain copy to clipboard print ?
  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:

view plain copy to clipboard print ?
  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:

view plain copy to clipboard print ?
  1. var result = engine.Operations.Call(action, 1, 2);  

The definitive reference is the DLR hosting specification.

Retrieved from "http://www.ironruby.net/Documentation/.NET/Hosting"

你可能感兴趣的:(prototype,C#,asp.net,Ruby,action,reference)