扩展方法-更改命名空间

本文关键字:命名空间 方法 扩展 | 更新日期: 2023-09-27 18:05:53

我使用的是第三方库,它在IQueryable之上包含了一堆扩展方法。要使用这些扩展方法,我不希望我的应用程序充斥着使用扩展方法所在的第三方名称空间的语句。

这样我就可以在不久的将来尽可能容易地将它从库中切换出来。然而,我不确定做这件事的最好方法是什么。我确实考虑过的一种选择是在项目中创建自己的扩展方法集(然后我可以控制名称空间)。这样做的问题是我看不出如何维护现有扩展方法的名称。例如:

namespace MyProject.Extensions {
    public static class IQueryableExtension {
        public static IQueryable<T> Fetch<T, K>(this IQueryable<T> queryable, Expression<Func<T, K>> selector) {
            return queryable.Fetch(selector);
        }
    }
}

你可以在这里看到问题。在我试图调用第三方扩展方法的地方,它实际上调用自己创建一个无限循环。

我很感激你的帮助。由于

扩展方法-更改命名空间

你不必像使用扩展方法一样使用扩展方法,你可以像使用静态方法一样使用它们…所以你可以调用第三方取回方法:

ThirdPartyNamespace.Fetch(queryable, selector)

要解决这个名称的问题,您可以很容易地调用扩展方法,就像它实际上是静态方法一样:

return Third.Party.Namespace.Fetch(queryable, selector);
话虽如此,我还是不明白你的动机。为什么不直接使用第三方名称空间呢?您在需要此扩展方法的文件开头使用指令的问题是什么?无论如何,您将有许多using指令。如果由于某种原因,这个列表对您来说太长了,只需将其包装在一个区域中并折叠该区域:
#region
using Namespace1;
using Namespace2;
using Namespace3;
#endregion