zoukankan      html  css  js  c++  java
  • 嵌入 IronRuby 到 CLR 主程序的例子

    下面的代码实现了 IronRuby 脚本继承 C# 主程序提供的类,并被 C# 调用的例子,对于使用 Iron 语言来做 .NET 程序插件或脚本是一个很好的参考。

    using System;
    using System.Reflection;
    using Microsoft.Scripting;
    using Microsoft.Scripting.Hosting;
    using IronRuby;

    namespace IronRubyTest1
    {
        public class Human
        {
            protected string GetInternalCondition()
            {
                return "all good";
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                const string RubyCode = @"
    class Doctor < IronRubyTest1::Human
      def check_condition()
        puts 'Condition: ' + get_internal_condition()
      end
    end";
                ScriptRuntime runtime = Ruby.CreateRuntime();
                ScriptEngine engine = Ruby.GetEngine(runtime);
                ScriptScope scope = engine.CreateScope();

                //让 DLR 载入包含 Human 类的 Assembly
                runtime.LoadAssembly(Assembly.GetExecutingAssembly());
                engine.Execute(RubyCode, scope); //执行 Ruby 代码
                dynamic globals = engine.Runtime.Globals;
                dynamic house = globals.Doctor.@new(); //创建 Doctor 的实例
                house.check_condition();

                Console.WriteLine("Press any key to close...");
                Console.ReadKey();
            }
        }
    }

    代码下载:http://pastebin.com/0tHWuAmH

    参考资料

    http://www.voidspace.org.uk/ironpython/hosting_api.shtml#id2

    《IronRuby In Action》

  • 相关阅读:
    MySQL数据库之数据类型
    MySQL数据库之数据操作
    MySQL数据库之表的操作
    十、原子操作
    九、std::async异步线程
    八、条件变量
    cisco笔试记录
    七、单例设计模式
    基于HTTP的功能追加协议
    使用栈来计算后缀表达式
  • 原文地址:https://www.cnblogs.com/oldrev/p/2062154.html
Copyright © 2011-2022 走看看