2

例如:

红宝石代码(仅用于测试):

def process_initial_array (ar)
     ar.join(" ")
end

c# 代码:在这里我创建字符串列表并将其传递给 IronRuby

List<string> source_values = new List<string>();

它充满;

label2.Text=IronRuby.CSharp.BasicInteraction.calculator(source_values);


namespace IronRuby.CSharp
{
    public class BasicInteraction
    {internal static string calculator(List<string> source_values)
        {
            var rubyEngine = Ruby.CreateEngine();
            var scope = rubyEngine.ExecuteFile("math_logic.rb");
            string result = rubyEngine.Operations.InvokeMember(scope, "process_initial_array", source_values);
            return result;
        }
    }
}

它唤起:

An unhandled exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in Anonymously Hosted DynamicMethods Assembly

Additional information: Unable to convert implicitly "IronRuby.Builtins.MutableString" to "string". There is explicit conversion.

好的,我在相关问题中找到了 IronRuby 字符串方法 to_clr_string,所以问题是我在哪里可以找到关于其他类型的相同方法的文档?

4

1 回答 1

1

在简要查看 IronRuby源代码后,我只能找到to_clr_stringto_clr_type(转换为System.Type)似乎与您的问题相关的内容。因此,我假设这些是您需要在内置 ruby​​ 类型和 CLR 类型之间进行转换的唯一转换方法。其他类型应该与它们的 CLR 对应类型相同。

请注意,还有其他方法可以将 ruby​​ 字符串转换为其他原始类型,如int( to_i) 和double( to_f)。

在您的示例中,您可以将结果显式转换为string

var result = (string)rubyEngine.Operations.InvokeMember(
  scope, "process_initial_array", source_values);

这样,您不必to_clr_string在 Ruby 端调用。

于 2012-06-03T01:12:06.567 回答