簡體   English   中英

無法在IronPython中使用自定義擴展方法

[英]Can't use custom extension methods with IronPython

我在C#類中定義了一些擴展方法,可以將它們很好地導入IronPython腳本中。 但是,當我嘗試調用以下方法之一(“查找”方法)時:

cmd.SetSpending(galaxy.Mod.Technologies.Find("Propulsion"), 100);

我收到一個錯誤:“預期謂詞[技術],找到了str”。

我不明白這是怎么回事-擴展方法將IEnumerable作為其第一個參數(“ this”參數),即galaxy.Mod.Technologies,將其作為第二個字符串,即我要傳遞的字符串in。我將其導入為:

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是否只是不支持它們,還是由於某些原因僅支持采用謂詞的擴展方法?

看來您有名字沖突。 .Net有自己定義的.Find()擴展方法。 將您的名稱重命名為其他名稱(如FindName()),它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM