我的应用程序可以通过用户提供的IronPython脚本进行扩展。
ScriptScope
。设置脚本如下所示:
import clr
import System
from System import Exception
from System import Math
clr.ImportExtensions(System.Linq.Enumerable)
我们的想法是,用户脚本可以使用Math
或Exception
等常见类型,而无需先导入它们。
我也希望LINQ能够开箱即用,所以我将最后一行添加到了安装脚本中。但是,虽然常规导入工作正常,但扩展导入却没有。根据我的想法,常规导入成为脚本范围的一部分,因此可用于在同一范围内运行的任何后续脚本。但是,扩展导入的效果似乎不同。
所以我的问题是:我执行的脚本如何使用LINQ而不必显式导入扩展方法?
注意:有很多脚本,其中许多只包含一个表达式。因此,我宁愿避免使用扩展名导入自动为每个脚本添加前缀的性能损失。
答案 0 :(得分:0)
在IL中查看Reflector或ILSpy中的LINQ语句。 LINQ是工作中的编译器魔术,它将语句转换为一堆类和方法调用。你永远不会让LINQ工作。你最好的选择是一个包装类,为你做一些与LINQ相关的工作。关注您尝试提供的实际用例,并提供Helper方法来完成工作。