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