gpt4 book ai didi

c# - 自定义扩展方法与框架扩展方法冲突。为什么?

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:07 28 4
gpt4 key购买 nike

我在我们的应用程序中有一个奇怪的行为。我想遍历表的行 ( DataTable )。我想使用 AsEnumerable()来自 DataTableExtensions 的扩展方法类(class)。像这样的东西:

foreach(var thing in table.AsEnumerable())
{
...
}

编译时,它提示我需要引用一些 ESRI DLL(GIS 应用程序)。经过一番挖掘,我从一个引用的 DLL 中找到了一些扩展方法,这些方法扩展了 ESRI 中的某些类型(例如 IEnumFieldIEnumLayer 等)

显然,一个 DataTable与那些完全不同,我似乎无法找到为什么它试图绑定(bind)到 AsEnumerable(this IEnumLayer)而不是 AsEnumerable(this DataTable) .有趣的是,我们正在使用 Resharper(很棒的工具!)并且 Resharper 在我们这边:当您导航到定义时,它会将您带到 AsEnumerable(this DataTable)。在对象浏览器中。

如果不发布数千行专有代码,我不能在这里发布太多代码示例,所以我只是在寻找一个我曾经遇到过同样的问题,我用...修复了它回答。

显而易见的解决方案是通过删除该命名空间的所有 using 语句来删除对扩展方法的任何引用。但这有一个令人讨厌的副作用,即迫使我们完全限定任何类型声明。不漂亮。

在此先感谢您的任何意见。

埃里克。

最佳答案

您可以使用 using [alias = ]class_or_namespace; 的 alias = 部分。然后你会得到类似 using my = System.Data; 的东西,然后将它与 my.DataTable.AsEnumerable();

一起使用

关于c# - 自定义扩展方法与框架扩展方法冲突。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977119/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com