使用外部程序调用C#方法(即:Iron Python)

时间:2016-11-21 23:42:36

标签: c# python scripting ironpython

我一直在努力使用外部程序为C#项目编写脚本,并且有点像编程菜鸟,我遇到了障碍。

到目前为止,我已经能够使用C#项目中的按钮单击来调用python脚本。我通过

实现了这一点

myproject_ironpython.cs

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

private static void doPython()
{
    ScriptEngine engine = Python.CreateEngine();
    engine.ExecuteFile(@"Hello_World.py"); //Outputs "Hello World" on cmd prompt in C#
}

我还能够在应用程序运行时调用一个属于C#项目的函数(如果你愿意的话,最基本的脚本形式)。我这样做是通过实现一个接受字符串的命令行来解释的。

myproject_invoke.cs

using System.Reflection;

private void buttonExecute_Click(object sender, EventArgs e)
{
    string Cmd = tbCmdLine.Text;

    // Copy line from tbCmdLine to tbPrevious
    tbCmdLine.Clear();
    tbPrevious.AppendText(Cmd);
    tbPrevious.AppendText(Environment.NewLine);

    // Process string before passing to invoker
    string[] CmdSegments = Cmd.Split('(', ')');
    Cmd = CmdSegments[0];
    string[] parameters = CmdSegments[1].Split(',');

    // pass string and type to invoker
    this.Invoke(this.GetType().ToString(), Cmd, parameters);
}

然后我可以通过输入字符串来调用各种函数。

我的愿景是使用除了擅长数据处理的C#之外的语言(Python,MatLab,Igor等)。我继承了C#应用程序(它擅长获取数据),所以我想让某些方法在外部可调用(即:take2Ddata())。这将允许我在使用此应用程序时使用其他语言编写完整的脚本。

如何从不同的编程语言向C#发送一串文本?也许我没有以正确的方式思考这个问题,你们中的一个人建议采用不同的方法。

谢谢!

0 个答案:

没有答案