2

C#/Winforms アプリケーションで IronPython 2.0 をホストしています。Python がホスト アプリケーションのさまざまなグローバルな静的オブジェクトにアクセスできるようにしたいと考えています。

例として、ホスト アプリケーションには、アクセスしたいさまざまなグローバル オブジェクトである多数の静的パブリック メンバーを含む内部静的クラス 'Global' があります。

static class Global
{
  public static FeederSystem Feed ...
  public static LightingSystem Lighting ...
  public static IOSystem Io ...
  ... etc
}

C# アプリケーションでできるように、Python コードで Global.Lighting.xxx を参照できるようにしたいと考えています。

Python コードがホスト アプリケーションの内部型を参照できるようにするために使用できる、「InternalsVisibleTo」に相当する IronPythonic はありますか? それとも、それらをすべて公開する必要がありますか?

4

1 に答える 1

3

わかりましたので、DLR仕様の助けを借りて、ここからhttps://github.com/IronLanguages/dlr/blob/master/Docs/dlr-spec-hosting.pdfを見て、IPを見て、これを自分で解決しました/DLR ソース。

これはあまり洗練されたものではなく、PrivateBinding プロパティが True に設定された ScriptRuntimeSetup オブジェクトを使用する方が、CreateEngine を使用するよりも適切な方法である可能性があります。

しかし、これは機能します:

Dictionary<string, object> options = new Dictionary<string, object>();
options.Add("PrivateBinding", true);

_engine = Python.CreateEngine(options);
于 2008-11-15T02:53:19.927 に答える