我确信这是一个简单的解决方案,我找不到它,但是这里有:
我在程序集中有一个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&lt; string&gt;','List&lt;对象&gt;'或'string []'。
正确的语法是什么?我无法在任何地方找到文档的类型映射(因为在某些情况下,根据Ruby可以做的事情来定义它可能太复杂了。)
编辑:
看起来我不想做的事情是可能的。我将不得不在.NET项目中包含IronRuby程序集,因此输入可以是IronRuby类型,以保持脚本界面更清晰。
如果有人想出办法使我的工作方式达到最初的目的,我会更改已接受的答案。
答案 0 :(得分:3)
您必须以不同的方式构建列表:
ls = System::Collections::Generic::List.of(String).new
ls.add("Peaches")
ls.add "Pulms"
答案 1 :(得分:1)
从未使用它,但我猜的是:
myClass.set_items(System::Collections::Generic::List(string).new ['Peaches', 'Plums'])
即,从数组中构造List<string>
。我对System::Collections::Generic::List(string)
部分感到怀疑,但从错误消息判断,这是如何在IronRuby中提供List<string>
的完全限定名称。