【发布时间】:2013-10-11 23:47:10
【问题描述】:
我在 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 方法。
我可以调用“库存” System.Linq 扩展方法如 Single 就好了:
techs = galaxy.Mod.Technologies;
tech = techs.Single(lambda t: t.Name == "Propulsion");
这完成了与我的 Find 方法完全相同的事情,但我真的希望能够使用自定义扩展方法。 IronPython 根本不支持它们,还是只是出于某种原因支持采用 Predicate 的扩展方法?
【问题讨论】:
标签: c# linq ironpython