1

アプリケーションの1つでホストされているIronPython環境があります。その環境で、インターフェイスで表されるオブジェクトの特定のメソッドにアクセスしたいと思います。ただし、IronPythonがインターフェイスによってエクスポートされたメソッドにのみアクセスできるようにしたいと思います。

私がすることができます:

ITheInterface obj = (ITheInterface)origObj;
sc.SetVariable("obj", obj);

ここで、scはスコープ、origObjはITheInterfaceを実装するクラスのインスタンスであり、ITheInterfaceは...まあ...インターフェイスです。

ただし、ITheInterfaceによってエクスポートされないorigObjインスタンスのパブリックメソッドには引き続きアクセスできます。

インターフェイスによってエクスポートされたメソッドのみにIronPythonのアクセスを制限するにはどうすればよいですか?

4

1 に答える 1

1

これは、IronPython がオブジェクトのランタイム タイプに基づいてすべての呼び出しを行うためです。不要なメソッドを非表示にするには、ITheInterface 参照を保持するが、適切なメソッドに転送することによってインターフェイスのみを実装するクラス (TheInterfaceWrapper) を作成します。そうすれば、ランタイム型には余分なメソッドがありません。

もう 1 つのオプションは他のコードに影響しますが、IronPython から見えないようにするメソッドに [PythonHidden] 属性を追加できます。

于 2013-01-05T18:46:27.683 に答える