我正在编写一个 C# 客户端应用程序,旨在通过脚本为自定义提供强大的支持,并且我选择 IronPython 作为我的目标脚本语言。我想将用户的代码与其状态的其余部分一起保存在应用程序的数据库中,但我需要用户能够将他们的脚本拆分为文件和模块。
如何配置 IronPython 引擎,使其使用字符串(具有相应的虚拟路径)作为导入源,而不是在用户文件系统中指定目录?这可能吗?
我正在编写一个 C# 客户端应用程序,旨在通过脚本为自定义提供强大的支持,并且我选择 IronPython 作为我的目标脚本语言。我想将用户的代码与其状态的其余部分一起保存在应用程序的数据库中,但我需要用户能够将他们的脚本拆分为文件和模块。
如何配置 IronPython 引擎,使其使用字符串(具有相应的虚拟路径)作为导入源,而不是在用户文件系统中指定目录?这可能吗?
您需要继承 PlatformAdaptationLayer 类并实现“文件系统”调用。IronPython 然后将转到 PAL 为文件执行 I/O。这还涉及实现一个返回 PAL 类型的 ScriptHost。Silverlight 主机就是一个很好的例子,它将文件 I/O 重定向到 XAP 文件。
如果您在 IronPython.CodePlex.com 上浏览 IronPython 源,您会在 IronPython_Main\Hosts\Silverlight\Microsoft.Scripting.Silverlight 中找到 Silverlight 主机。