我試圖重新使用一些我在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