在 Silverlight 中如何执行 IronPython 代码

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

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

 

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

[方法一] 

1 using  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 < int int >  factorial  =  script.GetVariable < Func < int int >> ( " 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 文件的存放路径。 

 

你可能感兴趣的:(silverlight)