これは簡単な修正であり、見つけることができないと確信していますが、次のようになります。
アセンブリ (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< string >'、'List< object >'、または 'string[ ]' にしても同様のエラーが発生します。
適切な構文は何ですか? 文書化されたタイプのマッピングはどこにも見つかりません (Ruby でできることを考えると、特定のシナリオで定義するには複雑すぎる可能性があるため)。
編集:
私がやろうとしていたことが可能なようには見えません。.NET プロジェクトに IronRuby アセンブリを含める必要があります。これにより、入力を IronRuby 型にして、スクリプト インターフェイスをクリーンに保つことができます。
誰かが私が最初に望んでいたように機能させる方法を思いついた場合は、受け入れられた答えを変更します.