如何在C#中调用 IronPython 代码 (基于IronPython 2.0A3)

前不久,IronPython发布了2.0A3,早期的1.1版本我早有耳闻,可是一直没有机会尝试使用。由于工作需要,今天尝试了一下。
在网上说的最多的就是在IronPython调用.Net的核心类库或其它的Assembly对象,却很少描述如何从C# 中调用IronPython。就算有也只是零零碎碎地只言片语,或者就是早期的1.1版本。
由于在两个版本中,C#中的调用方式上存在很大差别。所以费了不少周折。

1  PythonEngine pe = PythonEngine.CurrentEngine; //It requires to  analyze parameters.
2             IScriptModule sm = pe.CreateModule("Demo");
3             sm.SetVariable("x"1);
4             sm.SetVariable("y"2);
5             object s = pe.Evaluate("x>y", sm);

上面的代码演示了如何从C#中调用一个Lambda表达式然后返回结果,首先创建一个Python引擎,然后向模块中注册两个参数并设置Value(有些和CommandParameter对象相似),然后使用计算方法完成并返回调用结果。

但是这种调用方式存在一种弊端,就是必须主动的分析表达式中的参数个数,以便注册参数。更简单的方法我还在研究中,如果找到了,我会立刻更新文档,如果哪位朋友已经找了,还希望不惜赐教。
posted @ 2007-08-10 16:22 大约在冬季 阅读(1001) 评论(3) 编辑 收藏

 回复 引用 查看   
#2楼[楼主]2007-08-12 22:09 | 大约在冬季      
@木野狐(Neil Chen)
木野狐提供的地址我看了一下,列举的例子还是停留在1.1这个版本上,要知道从2.0开始,在.net中调用IronPython的方式有很大区别。不过,还是要谢谢木野狐。

 回复 引用 查看   
#3楼2007-12-28 23:05 | 无常      
学会了