我们的商店有一个核心库,它提供了一个扩展方法First
,它实际上做了 Linq 所做的事情FirstOrDefault
。在我们使用 Linq 之前,我们的方法就已经在使用了。Linq 引用是后来添加的,这样做不会导致任何问题。使用核心的应用程序能够继续调用First
并获取我们的方法,而不是同名的 Linq 方法。最近这种情况发生了变化,因为我们的 Core 的构建时间超过了一个月的时间。现在它解析First
为 Linq 的版本而不是自定义版本。
扩展方法的要点是您不限定它们。你打电话
PeopleTable.Rows.OfType(Of DataRow)().First
代替
utlCore.First(PeopleTable.Rows.OfType(Of DataRow)())
因此,重新访问代码以尝试限定命名空间是不切实际的。我知道复古核心以消除冲突并简单地使用是有意义的FirstOrDefault
,但这是一个更大且后来的任务。
显然,如何解决这些扩展方法有一些优先级。我不知道会发生什么变化导致这种优先级失控。你会从哪里开始寻找?什么可能导致这种情况?