Я пытаюсь создать Dsl, который будет иметь экземпляры, которые живут в
отдельные файлы Dsl .rb, а затем запустите их из CLR.
Я хочу создать и установить значения объекта Clr в IronRuby и
затем каким-то образом иметь доступ к объекту CLR после экземпляра .rb Dsl
файл запущен.
Вот мой объект Clr, который на данный момент очень прост:
namespace Horn.Core.Dsl
{
public class BuildMetaData : IBuildMetaData
{
public string Description { get; set; }
}
}
У меня есть следующий модуль, который я использую для указания моего Dsl и который
создаст экземпляр указанного выше BuildMetaData:
module MetaBuilder
module Dsl
module Main
attr_accessor :metadata
def install(name, &block)
@metadata = Horn::Core::Dsl::BuildMetaData.new
yield self if block_given?
end
def description(desc)
@metadata.Description = desc
end
def get_metadata
@metadata
end
end
end
end
include MetaBuilder::Dsl::Main
Я хочу получить свойство @metadata от Clr.
код после запуска экземпляра Dsl.
Экземпляр Dsl выглядит следующим образом:
install :horn do
description "A .NET build and dependency manager"
end
Мой код C # выглядит следующим образом:
var engine = Ruby.CreateEngine();
engine.Runtime.LoadAssembly(typeof(BuildMetaData).Assembly);
engine.ExecuteFile(buildFile);
var klass = engine.Runtime.Globals.GetVariable("get_metadata");
В любом случае я могу получить доступ к свойству @metadata без необходимости
загрязнять инстанцию Dsl?