我有一些我在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的扩展方法?
答案 0 :(得分:0)
看来你的名字有冲突。 .Net有自己定义的.Find()扩展方法。将您的名称重命名为其他内容(如FindName()),它应该可以正常工作。