2008-09-18 122 views
18

如何組織擴展方法?說,如果我有對象類和字符串類擴展我很想分開這些擴展方法爲階級IE:組織擴展方法

public class ObjectExtensions 
{ 
    ... 
} 

public class StringExtensions 
{ 
    ... 
} 

我我使這個太複雜或者這是否有道理?

回答

12

我使用名稱空間和類名的組合來組織擴展方法,它與您在問題中描述的方式類似。

通常我在我的解決方案中提供了大部分共享功能(如擴展方法)中的某種「主程序集」。爲討論起見,我們將這個程序集稱爲「框架」。

在框架程序集中,我嘗試模擬具有擴展方法的事物的名稱空間。例如,如果我擴展System.Web.HttpApplication,我會有一個「Framework.Web」命名空間。 「系統」命名空間中的「字符串」和「對象」類轉換爲該程序集中的根「框架」命名空間。

最後,命名符合您在問題中指定的行 - 以「Extensions」作爲後綴的類型名稱。這就產生了一個類層次結構是這樣的:

  • 框架空間(namespace)
    • Framework.ObjectExtensions(類)
    • Framework.StringExtensions(類)
    • Framework.Web空間(namespace)
      • Framework.Web.HttpApplicationExtensions(class)

的好處是,從維護的角度看,它真的很容易後來去找到一個給定類型的擴展方法。

+0

哇,在創建我的第一個擴展類之前,我遇到了這個問題。 – Sung 2009-03-12 15:21:54

3

有兩種方法,我組織,我使用擴展方法,

1)若擴展名是具體的項目我的工作,然後我把它在同一個項目/組件,但在它自己的命名空間。

2)如果擴展是一種我可能或正在其他項目中使用它的擴展,那麼我將它們在一個普通的擴展組件中分開。

要記住的最重要的是,我將在什麼範圍內使用它們?如果我只是牢記這一點,組織它們並不難。