3

.netdllをironpythonにロードしたいと思っています。

ただし、.net dllの静的関数の1つには、いくつかの名前付き引数とオプションの引数があります。

のように、Draw(weight:w、height:h、Area = 1)

完全な引数のみを使用できますか?

4

2 に答える 2

6

名前付きおよびオプションのパラメーターは完全にサポートされています。.NETはVB.NETサポートのために長い間これらを持っていたので、IronPythonは最初から同じ方法でそれらをサポートしてきました。新しいC#構文は、古いVBサポートと同じ基本メタデータにマップされます。

呼び出しには、Pythonの名前付きパラメーター構文であるf(x = 42)を使用します。オプションのパラメータについては、それらを省略できます。あなたの例の場合、おそらくDraw(weight、height)を実行し、Areaを除外することができます。または、名前付きパラメータとしてw / weightとheightを呼び出し、Areaを省略できます。

IronPythonが検索する基になる.NETメタデータは、OptionalAttributeまたはDefaultParameterValueAttributeのいずれかです。オプションの場合、タイプがオブジェクトでない限り、default(T)を渡します。オブジェクトの場合は、Missing.Valueを渡します。これは通常、リフレクションがこれらのAPIを呼び出す方法とも一致します。

于 2010-08-04T00:00:11.280 に答える
0

このSOの質問が言うように、.NETの新しい名前付き引数はIronPythonではサポートされていません(代わりに、プロパティを設定するために呼び出すコンストラクターに名前付き引数を使用します)。

オプションのものについては、この投稿が言うように、

アドレスインデクサーへの引数などのオプションのパラメーターについては、Missing.Valueを使用してデフォルトを使用できます。

もちろん、後from System.Reflection import Missing

于 2010-08-02T04:40:50.760 に答える