1
我有一些我在C#類中定義的擴展方法,我可以很好地將它導入到IronPython腳本中。然而,當我嘗試調用這些方法之一(「查找」方法):不能在IronPython中使用自定義擴展方法
cmd.SetSpending(galaxy.Mod.Technologies.Find("Propulsion"), 100);
我得到一個錯誤:「預計謂詞[科技],發現海峽」。
我不明白什麼是錯的 - 擴展方法需要一個IEnumerable作爲它的第一個參數(「this」參數),這是galaxy.Mod.Technologies是什麼,並且作爲它的第二個字符串,這是什麼我傳遞我進口它像這樣:
import FrEee;
import FrEee.Utility;
clr.ImportExtensions(FrEee.Utility.Extensions);
其中FrEee.Utility.Extensions是包含CommonExtensions.cs一個命名空間中,它被定義查找方法。
我可以稱之爲「股票」 System.Linq的擴展方法,如單就好:
techs = galaxy.Mod.Technologies;
tech = techs.Single(lambda t: t.Name == "Propulsion");
這樣可以完成同樣的事情作爲我的查找方法,但我真的希望能夠使用自定義擴展方法。它們是否僅僅在IronPython中不受支持,或者只是由於某種原因而支持Predicate的擴展方法?
我不認爲.NET有自己的Find擴展方法,因爲我從來沒有在我的C#代碼中看到過。我很樂意嘗試,雖然... – ekolis
嗯,顯然列表確實有一個查找方法! –
ekolis