我试图重新使用一些我在ASP.NET MVC 2项目中编写的ruby类。我遇到的问题是如果一个类在模块内,我似乎无法实例化它。如果我将模块移动到模块外面,它可以正常工作。这里是我想实例化的类的缩小版本:实例化C中的模块中的ruby类#
module Generator
class CmdLine
attr_accessor :options
def initialize(output)
end
def run(args=[])
end
end
end
如果注释掉模块部分,我可以创建对象。难道我做错了什么?下面是C#代码:
var engine = Ruby.CreateEngine();
var searchPaths = engine.GetSearchPaths().ToList();
searchPaths.Add(@"c:\code\generator\lib");
searchPaths.Add(@"C:\Ruby-ri-192\lib\ruby\1.9.1");
engine.SetSearchPaths(searchPaths);
engine.ExecuteFile(@"c:\code\generator\lib\generator\generator_cmd_line.rb");
var rubyCmdLineObj = engine.Runtime.Globals.GetVariableNames();
// These lines works when I comment out the module
// var genCmdLineObj = engine.Runtime.Globals.GetVariable("CmdLine");
// var cmdLineObj = engine.Operations.CreateInstance(genCmdLineObj);
// var results = engine.Operations.InvokeMember(cmdLineObj, "run");
// return Content(results);
var sb = new StringBuilder();
foreach (var name in rubyCmdLineObj)
{
sb.AppendFormat("{0} ", name);
}
return Content(sb.ToString());
我身边有一个工作 - 创建一个单独的类,我可以从C#中调用,但如果我没有这样做,我宁愿不做。任何指导将不胜感激。
谢谢谢伊!这有点黑客,但它的作品。感谢您花时间回答! – Rob 2011-02-27 16:54:25