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