2009-08-20 50 views
2

我想弄清楚什麼是更好/更清潔/更可維護的方式,對於以下問題。我的「客戶」類是通過LINQ從數據庫中生成的。客戶有一個特殊的激活鏈接,它是一個URL,需要根據來自Customer實例和一些靜態配置數據的數據生成。更好的代碼:擴展LINQ類,或者創建單獨的幫助類?

解決方案1:使用GenerateActivationUrl()方法擴展部分客戶類,該方法將從自己的實例中獲取數據並調用具有配置數據的靜態類,然後呈現Url並將其作爲字符串返回。

解決方案2:製作一個「LinkBuilder」靜態幫助類,它將Customer作爲GenerateActivationUrl(Customer customer)方法的參數,然後該方法將從客戶實例和靜態配置數據中獲取所需數據,然後返回Url作爲字符串。

哪個解決方案更好,爲什麼?謝謝!

回答

2

「擴展」是什麼意思?遺產?擴展方法?

就個人而言,我會使用局部類(在相同的命名空間,但不同的文件的代碼生成)公開此作爲一個屬性:

namespace MyDalNamespace { 
    partial class Customer { 
     public string ActivationUrl {get {/* some code */ }} 
    } 
} 

這直接結合ActivationUrl作爲一個普通的屬性Customer實例。

作爲一個屬性,它可以參與數據綁定(不像擴展方法,它不能)。

如果做「選項2」(也許你沒有訪問DAL DLL),然後擴展方法是合適的:

GenerateActivationUrl(this Customer customer) { ... } // note "this" 
+0

是我的意思是部分類「擴展」。不是擴展方法。只需添加到LINQ生成的部分類。 – Alex 2009-08-20 07:41:51

+0

您的評論仍然不是100%清晰;但不要編輯生成的輸出,如果這就是你的意思。 – 2009-08-20 07:43:23

+0

我想我會按照你的建議去做(選項1)。謝謝! – Alex 2009-08-20 07:45:10