无法在IronPython中使用自定义扩展方法

时间:2013-10-11 23:47:10

标签: c# linq ironpython

我有一些我在C#类中定义的扩展方法,我可以将其导入到IronPython脚本中。但是,当我尝试调用其中一种方法时(“查找”方法):

cmd.SetSpending(galaxy.Mod.Technologies.Find("Propulsion"), 100);

我收到错误:“预期谓词[技术],发现str”。

我不明白什么是错的 - 扩展方法将第一个参数(“this”参数)作为IEnumerable,这就是galaxy.Mod.Technologies,以及它的第二个字符串,这就是我传入。我是这样导入的:

import FrEee;
import FrEee.Utility;
clr.ImportExtensions(FrEee.Utility.Extensions);

其中FrEee.Utility.Extensions是包含CommonExtensions.cs的命名空间,其中定义了Find方法。

我可以调用“stock”System.Linq扩展方法,比如Single就好了:

techs = galaxy.Mod.Technologies;
tech = techs.Single(lambda t: t.Name == "Propulsion");

这实现了与我的Find方法完全相同的东西,但我真的希望能够使用自定义扩展方法。它们是不是在IronPython中不受支持,或者只是由于某种原因支持Predicate的扩展方法?

1 个答案:

答案 0 :(得分:0)

看来你的名字有冲突。 .Net有自己定义的.Find()扩展方法。将您的名称重命名为其他内容(如FindName()),它应该可以正常工作。