我在 C# 类中定义了一些扩展方法,可以将它们很好地导入 IronPython 脚本。但是,当我尝试调用其中一种方法(“查找”方法)时:
cmd.SetSpending(galaxy.Mod.Technologies.Find("Propulsion"), 100);
我收到一个错误:“预期谓词 [Technology],找到 str”。
我不明白出了什么问题 - 扩展方法将一个 IEnumerable 作为其第一个参数(“this”参数),这就是galaxy.Mod.Technologies 是什么,第二个是一个字符串,这是我正在传递的我正在像这样导入它:
import FrEee;
import FrEee.Utility;
clr.ImportExtensions(FrEee.Utility.Extensions);
其中,FrEee.Utility.Extensions 是一个包含 CommonExtensions.cs 的命名空间,其中定义了 Find 方法。
我可以调用“库存” System.Linq 扩展方法,例如 Single 就好了:
techs = galaxy.Mod.Technologies;
tech = techs.Single(lambda t: t.Name == "Propulsion");
这完成了与我的 Find 方法完全相同的事情,但我真的希望能够使用自定义扩展方法。IronPython 根本不支持它们,还是只是出于某种原因支持 Predicate 的扩展方法?