我們的商店有一個核心庫,提供一個擴展方法First
,它實際上是Linq的FirstOrDefault
所做的。在我們使用Linq之前,我們的方法正在使用中。 Linq參考文件稍後添加,這樣做不會導致任何問題。使用該核心的應用程序能夠繼續調用First
並使我們的方法與Linq同名。最近這個變化發生在我們的Core的構建變化超過了一個月的時間。現在它將First
解析爲Linq的版本,而不是定製版本。.NET擴展方法衝突解決類似命名的方法?
延伸方法的要點是你不符合他們的要求。你叫
PeopleTable.Rows.OfType(Of DataRow)().First
,而不是
utlCore.First(PeopleTable.Rows.OfType(Of DataRow)())
所以其不切實際的重溫代碼企圖資格的命名空間。我知道,複製核心以消除衝突並簡單地使用FirstOrDefault
是有道理的,但這是一個更大和更晚的待辦事項。
很明顯,這些擴展方法如何解決有一些優先級。我並不知道會發生什麼改變,導致這種優先順序失控。你會從哪裏開始尋找?什麼會造成這種情況?
「我們的方法在Linq之前就已經在使用了 - 作爲擴展方法,這有多可能?擴展方法與LINQ同時引入... –
您需要在實際使用案例中提供First'方法和編譯時類型的簽名,以便我們真正提供有關重載解決步驟。 –
您在更改期間是否在覈心中添加了對LINQ的引用?而且,在消費代碼的相同範圍內引用了LINQ和Core,如果是這樣,你爲什麼試圖在相同的消費者範圍內交換它們,以免引起麻煩。 –