我正在编写一个可以使用IronPython编写脚本的C#应用程序。我希望能够从C#代码中发出非致命的Python警告(可以使用常规的Python警告捕获系统来处理)。
我在PythonWarnings.warn
中找到了IronPython.Modules
方法,但它需要CodeContext
,我无法弄清楚如何创建/获取其中一个。
答案 0 :(得分:7)
当从IronPython调用.NET(即C#)时,如果被调用的代码选择接收它,则会自动注入CodeContext。假设您有一个程序集,类和方法,如下所示:
namespace ClassLibrary1
{
public class Class1
{
public static void MyMethod(CodeContext ctx, int number, string text)
{
var msg = string.Format("Warning: {0} and {1} ...", number, text);
PythonWarnings.warn(ctx, msg, null, 0);
}
}
}
请注意, MyMethod 接受 CodeContext 作为其第一个参数,并且可以使用提供的最后两个参数从IronPython调用:
import clr
clr.AddReference("ClassLibrary1")
from ClassLibrary1 import Class1
Class1.MyMethod(1234, "test")