私のアプリケーションは、ユーザーが提供する IronPython スクリプトを介して拡張できます。
- まず、新しい を作成します
ScriptScope
。 - そのスクリプト スコープを使用して、便利なインポートを実行する短いセットアップ スクリプトを実行します。
- 最後に、準備したスコープですべてのユーザー スクリプトを実行します。
セットアップ スクリプトは次のようになります。
import clr
import System
from System import Exception
from System import Math
clr.ImportExtensions(System.Linq.Enumerable)
アイデアは、ユーザー スクリプトが共通の型を使用できるMath
かException
、最初にそれらをインポートする必要がないということです。
また、LINQ をそのまま使用できるようにしたいので、セットアップ スクリプトに最後の行を追加しました。ただし、通常のインポートは正常に機能しますが、拡張機能のインポートは機能しません。私が理解できることから、通常のインポートはスクリプト スコープの一部になるため、同じスコープで実行される後続のスクリプトで使用できます。ただし、拡張インポートの動作は異なるようです。
私の質問は、拡張メソッドを明示的にインポートすることなく、実行するスクリプトで LINQ を使用するにはどうすればよいですか?
注: 多くのスクリプトがあり、その多くには 1 つの式しか含まれていません。したがって、各スクリプトに拡張子のインポートを自動的に追加することによるパフォーマンスの低下は避けたいと思います。