虽然刚刚才开始学习使用C#,个人感觉还是比较不错。除去部署的原因、迟缓的VS2010,使用C#来开发应用程序是一种享受。
为了扩展应用程序,一般都需要在应用程序中使用脚本。IronPython给在C#应用程序使用脚本提供了方便的操作。
当然归结底是因为DLR(动态语言运行时,Dynamic Language Runtime),它是用来向 CLR 中添加了一组专门用于满足动态语言需要的服务。
下面是一个简单的例子:
/*
* 这是一个C#与IronPython互操作的小例子(DLR的应用)
* 历史
* 2012-06-08 创建 姚彧
* 依赖
* IronPython, Microsoft.Scripting
* 要求
* 对象类必须有Public定义
* 版权:
* 学习用, 欢迎拷贝
*/
using System;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
namespace dscj.study.dlr
{
public class CTest
{
public static void Main(string[] args)
{
CTest aProgram = new CTest(@"从C#来", 10);
ScriptEngine aScriptEngine = Python.CreateEngine();
ScriptScope aScriptScope = aScriptEngine.CreateScope();
aScriptScope.SetVariable("aProgram", aProgram);
Console.WriteLine("未调用脚本前 Name={0}, Age={1}", aProgram.Name, aProgram.Age);
ScriptSource aScriptSource = aScriptEngine.CreateScriptSourceFromString(@"aProgram.Name='在Python中修改';aProgram.Age=33");
aScriptSource.Execute(aScriptScope);
Console.WriteLine("调用脚本后 Name={0}, Age={1}", aProgram.Name, aProgram.Age);
Console.ReadKey(true);
}
public string Name;
public int Age;
public CTest(string name, int age)
{
this.Name = name;
this.Age = age;
}
}
}