在 Silverlight 中如何执行 IronPython 代码

假设我已经有一个 .py 文件,文件名为 script.py,它可能包含如下代码:

1 def factorial(n):
2     "factorial(n) -> returns factorial of n"
3     if n <= 1return 1
4     return n * factorial(n-1)
5 
6 def welcome(name):
7     return "Hello " + name

 

 现在我想在 Silverlight 程序中调用 script.py 文件中的 factorial() 函数。那么我们可以通过以下代码来实现:

[方法一] 

1using Silverlight = Microsoft.Scripting.Silverlight;

2...
3var runtime = Silverlight.DynamicEngine.CreateRuntime();
4var python = runtime.GetEngine("python");
5dynamic script = runtime.UseFile("script.py");
6int p = script.factorial(5);
7tbkResult.Text = p.ToString();
8... 

 

[方法二]

1 using Silverlight = Microsoft.Scripting.Silverlight;
2 using Microsoft.Scripting.Hosting;
3 ...
4 ScriptRuntime runtime = Silverlight.DynamicEngine.CreateRuntime();
5 ScriptEngine python = runtime.GetEngine("python");
6 ScriptScope script = runtime.UseFile("script.py");
7 Func<intint> factorial = script.GetVariable<Func<intint>>("factorial");
8 tbkResult.Text = factorial(5).ToString();
9 ...

 


不过要想使程序正常运行,必须先添加以下引用:

IronPython.dll

IronPython.Modules.dll

Microsoft.Dynamic.dll

Microsoft.Scripting.Debugging.dll

Microsoft.Scripting.dll

Microsoft.Scripting.Silverlight.dll 

 

Microsoft.CSharp.dll (要想成功使用 dyanmic 关键字,必须添加该引用) 

 

当然这里面还要注意 script.py 文件的存放路径。 

 

posted @ 2010-06-04 00:08  zeyoo  阅读(1059)  评论(27)    收藏  举报