我确定这是一个简单的解决方法,我只是找不到它,但是这里有:
我在一个程序集中有一个 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 的功能,在某些情况下定义它可能太复杂了)。
编辑:
看起来我试图做的事情不可能。我必须在 .NET 项目中包含 IronRuby 程序集,以便输入可以是 IronRuby 类型,以保持脚本界面更清晰。
如果有人想出一种方法让它按照我最初想要的方式工作,我会更改已接受的答案。
最佳答案
您将不得不以不同的方式构建列表:
ls = System::Collections::Generic::List.of(String).new
ls.add("Peaches")
ls.add "Pulms"
关于c# - 将数组从 IronRuby 传递给 C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2481146/