如何在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  大约在冬季  阅读(1412)  评论(3编辑  收藏  举报