我一直在努力使用外部程序为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#发送一串文本?也许我没有以正确的方式思考这个问题,你们中的一个人建议采用不同的方法。
谢谢!