我们的商店有一个核心库,提供一个扩展方法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,如果是这样,你为什么试图在相同的消费者范围内交换它们,以免引起麻烦。 –