这似乎只是一个简单的错误,我无法解决。我正在使用IronPython在C# WPF应用程序中运行一个自定义C#类中的函数时,出现以下错误:AttributeError: 'MyScriptingFunctions'对象没有属性'Procedure'
。
我运行的python脚本非常简单,只有两行。第一行执行正常,错误发生在第二行。
txt.Text = "some text"
MyFunc.Procedure(5)
MyScriptingFunctions.cs:
class MyScriptingFunctions
{
public MyScriptingFunctions() {}
public void Procedure(int num)
{
Console.WriteLine("Executing procedure " + num);
}
}
这是我设置IronPython引擎的步骤:
private void btnRunScript_Click(object sender, RoutedEventArgs e)
{
MyScriptingFunctions scriptFuncs = new MyScriptingFunctions();
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
ScriptRuntime runtime = engine.Runtime;
runtime.LoadAssembly(typeof(String).Assembly);
runtime.LoadAssembly(typeof(Uri).Assembly);
//Set Variable for the python script to use
scope.SetVariable("txt", fullReadResultsTextBox);
scope.SetVariable("MyFunc", scriptFuncs);
string code = this.scriptTextBox.Text;
try
{
ScriptSource source = engine.CreateScriptSourceFromString(code, SourceCodeKind.Statements);
source.Execute(scope);
}
catch (Exception ex)
{
ExceptionOperations eo;
eo = engine.GetService<ExceptionOperations>();
string error = eo.FormatException(ex);
MessageBox.Show(error, "There was an Error");
return;
}
}
我只设置了两个变量:txt
是System.Windows.Controls.TextBox
类型的,而MyFunc
则是我的自定义类MyScriptingFunctions
的对象。
我做错了什么,为什么Python脚本可以正确执行TextBox方法而不能执行我的自定义类的方法?