16

IronPython を使用してアセンブリを作成したいのですが、C# から呼び出すことができます。ここで、私が求めていないことが 2 つあります。

  1. IronPython から C# を呼び出す方法を尋ねているわけではありません。最も簡単に見つけられるドキュメントは、IronPython 内から C# を呼び出す方法を説明しています。(たとえば、IronPython に同梱されているチュートリアル。) 逆に、C# から IronPython を呼び出します。

  2. IronPython インタープリターを埋め込む方法を尋ねているわけではありません。C# から IronPython インタープリターを呼び出す方法について、いくつかの有用なリファレンス (たとえば、ここここ) を見つけました。それは役に立ちますが、IronPython からコンパイルされたアセンブリを作成することにもっと興味があります。つまり、ソース コード文字列をインタープリターに渡すのではなく、IronPython アセンブリにメソッド呼び出しを行いたいと考えています。

アセンブリを作成したら、それを呼び出すためのヒントを教えてください。私が見つけた1 つのブログ投稿は次のように述べています。

... C# から Python アセンブリを呼び出すのは簡単ではありません。その python アセンブリには、有用な C# オブジェクトに簡単に反映されない動的な型が含まれています。

IronPython と C# の間で基本的なデータ型を渡すためのチート シートを知っていますか?

更新: 今のところ私が最も興味を持っているシナリオは、2 つまたは 3 つのdouble値を Python に渡し、1 つまたは 2 つのdouble値を取得することです。文字列を渡して文字列を返すことができれば素晴らしいことですが、私の最優先事項は数値をやり取りすることです。

4

1 に答える 1

5

C# によって作成された型のように見える型を含むアセンブリを作成することが目的の場合、これは実際には不可能です。ここでの主な問題は、Python 型の動作が CLR 型とはかなり異なることです。たとえば、CLR 型は完全に静的ですが、実行時に変更できます。したがって、現在これを実現する唯一の方法は、ホスティング インターフェイスを使用して小さな C# スタブを作成し、作業を Python コードに委任することです。

IronPython にはアセンブリにコンパイルする機能がありますが (これは、そのブログ投稿で言及されていることです)、主にこれを行ったのは、ソース コードを提供することなく、IronPython アプリケーションを顧客にデプロイできるようにするためです。

この回答にコメントを追加して、より具体的なシナリオをフォローアップしてください。実装方法に関するアドバイスを喜んで提供します。

于 2009-02-19T06:10:00.920 に答える