個のDsl.rbファイルに存在するインスタンスを持つDslを作成しようとしていて、それらをCLRから実行しています。IronRuby Dslからの戻り値へのアクセス
IronRubyでClrオブジェクトの値を作成して設定し、 は、.rb Dslインスタンス ファイルが実行された後、何らかの形でCLRオブジェクトにアクセスします。ここで
は、現時点では非常に簡単です私の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
私は何とかDSLのインスタンスが走った後のClr コードから@metadataプロパティを取得できるようにしたいです。
var engine = Ruby.CreateEngine();
engine.Runtime.LoadAssembly(typeof(BuildMetaData).Assembly);
engine.ExecuteFile(buildFile);
var klass = engine.Runtime.Globals.GetVariable("get_metadata");
は私がすることなく、@metadataプロパティで取得することができますとにかくあります:私のC#コードは、現在このようになります
install :horn do
description "A .NET build and dependency manager"
end
:
DSLのインスタンスは、現在、このようになります。 Dslインスタンスを汚染しますか?