IronPython - 从C#发出警告

时间:2013-12-31 12:38:51

标签: c# ironpython

我正在编写一个可以使用IronPython编写脚本的C#应用​​程序。我希望能够从C#代码中发出非致命的Python警告(可以使用常规的Python警告捕获系统来处理)。

我在PythonWarnings.warn中找到了IronPython.Modules方法,但它需要CodeContext,我无法弄清楚如何创建/获取其中一个。

1 个答案:

答案 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")