class ScriptScopeDelegate
{
static void Main()//调用声明在ScriptScope中的方法 用ScriptScope存储和获取信息
{
string python = @"
def sayHello(user):
print 'Hello %(name)s' % {'name' : user}
";
//python "\r\ndef sayHello(user):\r\n print 'Hello %(name)s' % {'name' : user}\r\n"
ScriptEngine engine = Python.CreateEngine();
//engine "IronPython 2.7.3"
ScriptScope scope = engine.CreateScope();
//scope {Microsoft.Scripting.Hosting.ScriptScope}
engine.Execute(python, scope);
dynamic function = scope.GetVariable("sayHello");
//{IronPython.Runtime.PythonFunction}
function("Jon");
}
} 作用域中也可以包含函数,我们可以动态地获取然后调用这些函数,传递参数并从中返回值。
要做到这些,最简单的方式就是使用dynamic类型
很多情况下,能够在执行时运行用户输入代码的表达式求值程序是十分有用的,如计算折扣、
运费的业务规则等。并且在以文本形式修改这些规则,而不用重新编译或重新部署二进制文件
方面非常有用。
输出
Hello Jon
本文介绍如何使用IronPython在C#环境中动态创建和调用Python函数,并通过示例展示了整个过程。这种方式对于需要在运行时根据用户输入动态执行代码的应用场景非常有用,例如在不重新编译或部署的情况下修改业务规则。

348

被折叠的 条评论
为什么被折叠?



