2011-08-18 85 views
5

我正在使用第三方庫,其中包含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); 
     } 
    } 
} 

您可能會在這裏看到問題。我在哪裏試圖調用我的第三方擴展方法,它實際上調用自己創建一個無限循環。

我會很感激的幫助。由於

回答

4

您不必使用擴展方法作爲擴展方法,你可以使用它們像靜態方法...所以你可以調用第三方獲取方法:

ThirdPartyNamespace.Fetch(queryable, selector) 
+0

嗨感謝你的答案。 – nfplee

1

爲了解決這個問題名字,你可以很容易地調用擴展方法的靜態方法真的是:

return Third.Party.Namespace.Fetch(queryable, selector); 

話雖如此,我不明白你的動機。你爲什麼不想使用第三方命名空間?在需要此擴展方法的文件開始處使用指令時,您遇到什麼問題?反正你會有很多使用指令。如果該列表是你太久出於某種原因,只需將它放在一個區域和摺疊該地區:

#region 

using Namespace1; 
using Namespace2; 
using Namespace3; 

#endregion 
+0

嗨,感謝您的回覆。這樣做的原因是,擴展方法是NHibernate的一部分,我希望將來有時會遷移到實體框架。因此,我試圖刪除儘可能多的依賴NHibernate,因爲我可以。 – nfplee