I'm sure this is an easy fix and I just can't find it, but here goes:
I have a C# class (let's call it Test) in an assembly (let's say SOTest.dll). Here is something along the lines of what I'm doing:
private List<string> items;
public List<string> list_items()
{
return this.items;
}
public void set_items(List<string> new_items)
{
this.items = new_items;
}
In the IronRuby interpreter I run:
>>> 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)
I get a similar error whether I make the argument a 'List< string >', 'List< object >' or 'string[ ]'.
What is the proper syntax? I can't find a documented mapping of types anywhere (because it's likely too complicated to define in certain scenarios given what Ruby can do).
EDIT:
It doesn't look like what I was trying to do is possible. I'll have to include the IronRuby assembly in the .NET project so the input can be an IronRuby type to keep the scripting interface cleaner.
If anybody comes up with a way to make it work how I originally wanted, I'll change the accepted answer.