Lio*_*nAM 1 .net c# extension-methods ambiguous-call
在将我的(大型)应用程序从 .NET Framework 4.X 移植到 .NET 5+ 时,偶然发现了System.Collections.Generic.CollectionExtensions.NET Framework 中不存在的新 .NET Framework。在它存在之前,我创建了一个扩展方法GetValueOrDefault,它具有与新方法类似的签名 - 但不同之处在于我检查空键并在这种情况下返回默认值而不是抛出异常。
在某些情况下,我得到了不明确的匹配 - 但并非总是如此(大概是因为我的方法有一个默认参数值)。现在,大部分时间都使用 .NET 版本,而我的应用程序到处崩溃......
有没有办法全局隐藏扩展方法或始终更喜欢我的版本?
PS:我知道存在类似的问题(模糊的扩展方法),但它已经很老了,约会于.NET core之前
关于重命名:实际上,我不想重命名我的方法。
我想说这里最简单的解决方法是重命名您的扩展方法(例如NullKeySafeGetValueOrDefault),并在各处更改您的代码。
即使有一种微妙的方法可以让编译器更喜欢你的版本,最好还是坦率地对待它。无论何时有人阅读代码,他们都应该毫无疑问将调用哪个方法。
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |