English 中文(简体)
未知方法,使用C#中的IronRuby。
原标题:
  • 时间:2009-03-18 21:57:23
  •  标签:

嗨,晚上好,希望有人能帮忙。

我正在尝试建立某种脚本支持。我有下面的代码,它执行一个Ruby方法并返回结果。然而,它从IronRuby本身返回“找不到方法错误”。

var engine = IronRuby.Ruby.CreateEngine();
returnvalue = engine.Operations.InvokeMember(instance, method, arg).ToString();

我正在运行以下 Ruby 代码作为测试:

class Plotlight
def get_message(a)
res = "Hello- from Ruby " << a
res
end

def swapcase(a)
res = a.downcase
res
end
end

现在,运行方法get_message("something")时,一切都很顺利。然而,当运行引用标准库的东西(例如此示例中的swapcase)时,它将返回错误。

$exception {"undefined method `downcase  for fooBAR:ClrString"} System.Exception {System.MissingMethodException}

将此代码通过ir.exe运行没有任何问题。

我需要引用图书馆吗?如果需要,该如何引用?

希望有人能帮助!非常感谢。

Kind regards,
Marco

最佳回答

Ruby字符串具有与CLR字符串不兼容的语义。 特别是,它们是可变的。 Ruby字符串和CLR字符串之间的Interop尚未完成,因此现在您需要在C#代码或Ruby代码中显式地将CLR System.String转换为Ruby字符串对象。

最简单的解决方案是像这样定义 swapcase:

def swapcase(a)
  String.new(a).downcase
end
问题回答

暂无回答




相关问题
热门标签