我很确定这只是一个简单的修复,但我找不到它,下面是具体情况:
我有一个C#类(我们叫它Test)在一个程序集中(假设是SOTest.dll)。以下是我正在做的事情的大致内容:
在IronRuby解释器中,我运行:
无论我将参数设置为 'List< string >'、'List< object >' 还是 'string[ ]',都会出现类似的错误。请问正确的语法是什么?我无法在任何地方找到类型的映射文档(因为在某些情况下,由于 Ruby 可以做的事情太复杂了,可能很难定义)。编辑:看起来我想要做的事情不可能实现。我必须在 .NET 项目中包含 IronRuby 组件,这样输入就可以是 IronRuby 类型,以保持脚本界面更清晰。如果有人能想出一种使其按照我最初想要的方式工作的方法,我会改变接受的答案。
我有一个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< string >'、'List< object >' 还是 'string[ ]',都会出现类似的错误。请问正确的语法是什么?我无法在任何地方找到类型的映射文档(因为在某些情况下,由于 Ruby 可以做的事情太复杂了,可能很难定义)。编辑:看起来我想要做的事情不可能实现。我必须在 .NET 项目中包含 IronRuby 组件,这样输入就可以是 IronRuby 类型,以保持脚本界面更清晰。如果有人能想出一种使其按照我最初想要的方式工作的方法,我会改变接受的答案。
List<string>
有一个构造函数,它接受一个IEnumerable<string>
,而IronRuby数组肯定支持它。 - Daniel Earwicker