Я уверен, что это легко исправить, и я просто не могу его найти, но здесь идет речь:
У меня есть класс C # (назовем его Test) в сборке (скажем, SOTest.dll).
Вот что-то вроде того, что я делаю:
private List<string> items;
public List<string> list_items()
{
return this.items;
}
public void set_items(List<string> new_items)
{
this.items = new_items;
}
В интерпретаторе IronRuby я запускаю:
>>> require "SOTest.dll"
true
>>> include TestNamespace
Object
>>> myClass = Test.new
TestNamespace.Test
>>> myClass.list_items()
['Apples', 'Oranges', 'Pears']
>>> myClass.set_items ['Peaches', 'Plums']
TypeError: can't convert Array into System::Collections::Generic::List(string)
Я получаю похожую ошибку, независимо от того, делаю ли я аргумент 'List ', 'List ' или 'string []'.
Какой правильный синтаксис? Я нигде не могу найти документированное сопоставление типов (потому что оно, вероятно, слишком сложно для определения в определенных сценариях с учетом того, что может делать Ruby).
EDIT:
Не похоже, что то, что я пытался сделать, возможно. Мне придется включить сборку IronRuby в проект .NET, чтобы входные данные могли быть типа IronRuby, чтобы сохранить интерфейс сценариев более чистым.
Если кто-нибудь придумает способ заставить его работать так, как я хотел, я изменю принятый ответ.