繁体   English   中英

IronPython - 最终用户的编辑器

[英]IronPython - Editor for end-user

我们目前正在研究如何将 IronPython(脚本)嵌入到我们的 C# 应用程序中。

我们看到了它将为我们的最终用户提供的好处,使他们能够连接到我们的应用程序,但不断出现的一个问题是我们如何为最终用户提供代码编辑能力,这些能力知道我们的应用程序中的不同入口上下文应用。

我知道我们可以提供一个带有语法高亮显示的简单文本编辑器,但是我们如何更进一步并允许用户针对我们从应用程序公开的对象测试他们的脚本。 请记住,我们将根据入口点的上下文公开不同的对象。

您如何允许最终用户在您的应用程序中测试、编写和编辑脚本?

PS - 我是新来的,所以如果我做的不对,请告诉我!!!

也许您想要的是使用Visual Studio 2010 Shell隔离。 它可用于在应用程序中提供视觉工作室环境,就像 VBA 过去那样。 至于 Python 支持,你可以看看IPyIsolatedShell

您可以在 C# 应用程序中托管 IronPython。 然后,您可以从 C# 应用程序传入变量并执行使用它们的 IronPython 代码。 Dino Viehland 在 PDC 上做了一个名为Using Dynamic Languages to Build Scriptable Applications的演讲。 Dino 提供了他在 PDC 上创建的应用程序的源代码,但它使用的是旧版本的 IronPython。

下面是 IronPython 2.7.1 的一些代码,它向您展示了如何用几行代码托管 IronPython。

using System;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

public class MyIronPythonHost
{
    ScriptEngine scriptEngine;
    ScriptScope scriptScope;

    public void Initialize(MyApplication myApplication)
    {
        scriptEngine = Python.CreateEngine();
        scriptScope = scriptEngine.CreateScope();
        scriptScope.SetVariable("app", myApplication);
    }

    public void RunPythonCode(string code)
    {
        ScriptSource scriptSource = scriptEngine.CreateScriptSourceFromString(code);
        scriptSource.Execute(scriptScope);
    }
}

上面的代码通过脚本作用域将名为 MyApplication 的应用程序对象传递给 IronPython,并将其变量名设置为app 然后,这个app变量可用于 IronPython 代码,它可以在其中调用方法、访问属性等。

上面代码中的最后一个方法是 RunPythonCode 方法,它接收用户编写的 IronPython 代码并执行它。

然而,比这更进一步并允许用户以类似于调试 VBA 宏的方式调试他们的 IronPython 代码是一项主要的开发工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM