您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在C#.NET中调用Ruby或Python API

在C#.NET中调用Ruby或Python API

这是动态语言运行时应该做的两件事之一:每个人都认为DLR仅适用于语言实现者,以使在CLI上更轻松地实现动态语言。但是,也使应用程序编写者更容易在其应用程序中托管动态语言。

在DLR之前,每种语言都有自己的托管API。现在,DLR具有标准化的托管规范,适用于每种 语言,并且支持C#4和VB.NET 10中的动态类型对象,它比以往任何时候都更加容易:

// MethodMissingDemo.cs
using System;
using IronRuby;

class Program
{
    static void Main()
    {
        var rubyEngine = Ruby.CreateEngine();
        rubyEngine.ExecuteFile("method_missing_demo.rb");
        dynamic globals = rubyEngine.Runtime.Globals;

        dynamic methodMissingDemo = globals.MethodMissingDemo.@new();

        Console.WriteLine(methodMissingDemo.HelloDynamicWorld());

        methodMissingDemo.print_all(args);
    }
}

# method_missing_demo.rb
class MethodMissingDemo
  def print_all(args)
    args.map {|arg| puts arg}
  end

  def method_missing(name, *args)
    name.to_s.gsub(/([[:lower:]\d])([[:upper:]])/,'\1 \2')
  end
end

在这里,您会看到东西在各个可能的方向传播。C#代码正在Ruby对象上调用一个 甚至不存在的方法 ,并且Ruby代码正在.NET数组上进行迭代并将其内容打印到控制台。

python 2022/1/1 18:31:48 有231人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶