4

これは簡単な修正であり、見つけることができないと確信していますが、次のようになります。

アセンブリ (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 型にして、スクリプト インターフェイスをクリーンに保つことができます。

誰かが私が最初に望んでいたように機能させる方法を思いついた場合は、受け入れられた答えを変更します.

4

2 に答える 2

3

リストを少し異なる方法で作成する必要があります。

ls = System::Collections::Generic::List.of(String).new
ls.add("Peaches")
ls.add "Pulms"
于 2010-03-20T07:05:17.863 に答える
1

使用したことはありませんが、次のようなものだと思います。

myClass.set_items(System::Collections::Generic::List(string).new ['Peaches', 'Plums'])

つまりList<string>、配列から a を作成します。その部分は疑問ですがSystem::Collections::Generic::List(string)、エラーメッセージから判断するとList<string>、IronRuby での a の完全修飾名の付け方です。

于 2010-03-19T23:42:33.713 に答える