IronPython - 面向终端用户的编辑器

9
我们正在研究如何将IronPython(脚本)嵌入我们的C#应用程序中。我们看到它为最终用户提供的好处,在给予他们钩入我们应用程序的能力的同时,一个经常出现的问题是如何为最终用户提供意识到我们应用程序不同入口上下文的代码编辑能力。我知道我们可以提供一个简单的文本编辑器和语法高亮,但是如何进一步允许用户根据我们从应用程序中公开的对象测试他们的脚本,需要记住我们将根据入口点的上下文公开不同的对象。您如何允许最终用户在您的应用程序中测试、编写和编辑脚本?
PS - 我是新来的,请让我知道我是否做对了!

Visual Studio 2010 Shell 集成版,赢了! - John Alexiou
2个回答

2
你可以在C#应用程序中托管IronPython。然后,您可以从C#应用程序传递变量并执行使用这些变量的IronPython代码。Dino Viehland在PDC上做了一个关于此主题的演讲,名为“使用动态语言构建可脚本化应用程序”。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代码是一个重要的开发工作。

谢谢Matt。我们将会把IronPython与我们的C#应用程序集成起来,我的最初问题是关于如何让用户编辑和编写Python代码的。到目前为止,我们已经能够使用ISharpCode.TextEditor构建一个基本的IDE,但功能还很基础。 - paligap

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接