IronRuby, DLR, Область применения - PullRequest
1 голос
/ 27 августа 2010

что я хочу сделать, это ввести домен приложения запущенного приложения в загруженный (железный) скрипт Ruby.

Вот пример того, чего я хочу достичь:


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

namespace Testing
{
    public class MainClass
    {
        public MainClass() { }
        public override string ToString() { return "Hello World"; }
        public static void Main()
        {
            ScriptEngine engine = IronRuby.Ruby.CreateEngine();
            ScriptScope scope = engine.CreateScope();
            String code = "p Testing::MainClass.new.to_str";
            ScriptSource script = engine.CreateScriptSourceFromString(code, SourceCodeKind.SingleStatement);
            script.Compile();
            script.Execute(scope);
        }
    }
}

Код не работает, конечно, потому что AppDomain или область (я не уверен, что на самом деле) не загружается в движок IronRuby.

Итак, вопрос в том, как заставить код работать (выведите «Hello World!»)?

1 Ответ

0 голосов
/ 27 августа 2010

Здесь мы можем загрузить во время выполнения сборки:


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

namespace Testing
{
    public class MainClass
    {
        public MainClass() { }
        public override string ToString() { return "Hello World"; }
        public static void Main()
        {
            ScriptEngine engine = IronRuby.Ruby.CreateEngine();
            engine.Runtime.LoadAssembly(Assembly.LoadFile(Assembly.GetExecutingAssembly().Location));
            ScriptScope scope = engine.CreateScope();
            String code = "p Testing::MainClass.new";
            ScriptSource script = engine.CreateScriptSourceFromString(code, SourceCodeKind.SingleStatement);
            script.Execute(scope);
        }
    }
}
...