【发布时间】:2010-03-19 23:25:27
【问题描述】:
我确定这是一个简单的解决方法,但我找不到它,但这里是:
我在程序集(比如说 SOTest.dll)中有一个 C# 类(我们称之为 Test)。 以下是我正在做的事情:
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 类型,以保持脚本界面更简洁。
如果有人想出一种方法让它按我最初想要的方式工作,我会更改接受的答案。
【问题讨论】: