Я пытаюсь вернуть объект CLR из Iron Ruby.
У меня есть следующий тип CLR, определенный в C #
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 происходит от 'Horn.Core.DSL.Domain, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null' в контексте 'LoadNeither' в расположении 'C: \ Projects \ horn \ branch \ rubydsl \ src \ Horn .Dsl.Specificatioin \ Bin \ Debug \ Horn.Core.DSL.Domain.dll. Тип B происходит от «Horn.Core.DSL.Domain, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null» в контексте «По умолчанию» в расположении «C: \ Users \ paul.cowan \ AppData \ Local \ Temp». \ 1vt2usw2.rxf \ Horn.Dsl.Specificatioin \ сборка \ DL3 \ 1d5ed945 \ 7c19e429_1a97c901 \ Horn.Core.DSL.Domain.DLL».
Можно ли вернуть типы CLR из Iron Ruby