IronRuby, DLR, Область применения

Я хочу представить домен приложения запущенного приложения в загруженном (железном)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 ответ

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


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);
        }
    }
}
Другие вопросы по тегам