Iron Ruby から CLR オブジェクトを返そうとしています。
C#で定義された次のCLRタイプがあります
public class BuildMetaData
{
public string Description { get; set; }
}
次の IronRuby ファイルがあります。
$:.unshift(File.dirname(__FILE__) + '/../bin/Debug')
require 'mscorlib'
require 'Horn.Core.DSL.Domain'
class MetaDataFactory
def return_meta_data()
meta = Horn::Core::DSL::Domain::BuildMetaData.new
meta.Description = "A description of sorts"
meta
end
end
失敗している次のテストがあります。
[Fact]
public void Then_a_build_metadata_object_is_returned()
{
var engine = Ruby.CreateEngine();
engine.ExecuteFile("test.rb");
var code = String.Format("{0}.new.method :{1}", "MetaDataFactory", "return_meta_data");
var action = engine.CreateScriptSourceFromString(code).Execute();
var result = (BuildMetaData)engine.Operations.Call(action);
Assert.Equal(result.Description, "A description of sorts");
}
IronRuby から返されたオブジェクトをキャストしようとすると失敗します。
次のエラー メッセージが表示されます。
[A]Horn.Core.DSL.Domain.BuildMetaData は [B]Horn.Core.DSL.Domain.BuildMetaData にキャストできません。タイプ A は、場所「C:\Projects\horn\branches\rubydsl\src\Horn」の「LoadNeither」コンテキストの「Horn.Core.DSL.Domain、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null」から発生します。 .Dsl.Specificatioin\bin\Debug\Horn.Core.DSL.Domain.dll'. タイプ B は、場所「C:\Users\paul.cowan\AppData\Local\Temp」の「Default」コンテキストの「Horn.Core.DSL.Domain、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null」から発生します。 \1vt2usw2.rxf\Horn.Dsl.Specificatioin\assembly\dl3\1d5ed945\7c19e429_1a97c901\Horn.Core.DSL.Domain.DLL'.
Iron Ruby から CLR 型を返すことは可能ですか?