C# Can';不要在IronPython中使用自定义扩展方法

C# Can';不要在IronPython中使用自定义扩展方法,c#,linq,ironpython,C#,Linq,Ironpython,我在我的C#类中定义了一些扩展方法,我可以很好地将它们导入到IronPython脚本中。但是,当我尝试调用其中一个方法(“Find”方法)时: 我得到一个错误:“预期谓词[技术],发现str” 我不明白出了什么问题-扩展方法将IEnumerable作为其第一个参数(“this”参数),这是galaxy.Mod.Technologies,而将字符串作为其第二个参数,这是我要传递的。我是这样导入的: import FrEee; import FrEee.Utility; clr.ImportExte

我在我的C#类中定义了一些扩展方法,我可以很好地将它们导入到IronPython脚本中。但是,当我尝试调用其中一个方法(“Find”方法)时:

我得到一个错误:“预期谓词[技术],发现str”

我不明白出了什么问题-扩展方法将IEnumerable作为其第一个参数(“this”参数),这是galaxy.Mod.Technologies,而将字符串作为其第二个参数,这是我要传递的。我是这样导入的:

import FrEee;
import FrEee.Utility;
clr.ImportExtensions(FrEee.Utility.Extensions);
其中FrEee.Utility.Extensions是包含CommonExtensions.cs的命名空间,在其中定义了Find方法

我可以调用“stock”系统。Linq扩展方法,如Single just fine:

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

这与Find方法完全相同,但我确实希望能够使用自定义扩展方法。它们是IronPython中不支持的,还是出于某种原因只支持使用谓词的扩展方法?

似乎存在名称冲突。Net定义了自己的.Find()扩展方法。将您的名称重命名为其他名称(如FindName()),它应该可以工作

我认为.NET没有自己的Find扩展方法,因为我在C#代码中从未见过这种方法。我愿意尝试一下,不过…嗯,显然列表确实有一个查找方法!
techs = galaxy.Mod.Technologies;
tech = techs.Single(lambda t: t.Name == "Propulsion");