2009-07-22 100 views
3

我正在爲頻率創建轉換類,並且我想讓我的團隊在需要時能夠添加額外的轉換。轉換類擴展性(擴展方法vs Parital Class)

Frequency myFrequency = new Frequency(100, MHz); 
double value = myFrequency.InKhz(); 

的類的源代碼將不被包括在未來的項目,所以我將不得不具有類是部分或類的額外轉換將需要擴展。一個例子是增加一個轉換爲GHz

myFrequency.InGHz() 

哪個是最好的方式來處理這個?

更新:在閱讀Randolpho的答案後,我將採用擴展方法。隨着時間的推移,擴展會被放入基本代碼中,但我不想讓其他團隊成員等待更新的程序集,這使得他們可以更快地轉向下一個任務。

回答

3

除非您有原始來源,否則部分課程將無法使用。如果您拒絕開發人員訪問該源,則他們唯一的選擇是使用擴展方法。

這就是說,你可能只是想有一個過程來更新庫的新增加;看起來他們很少見。

+1

謝謝。我從來沒有嘗試過用我描述的方式使用部分類,我只是假設他們會工作。 – 2009-07-22 17:46:18

1

擴展方法一路。它不會限制你,部分方法只能在程序集中使用,而擴展方法可以在任何地方聲明。

+0

這就是我的想法,但我的一些同事推廣方法是「邪惡的」。 – 2009-07-22 17:47:05

0

如果您希望在不編譯的情況下進行擴展,您可能需要創建一個單獨的轉換類。這將允許您在運行時指定轉換並將它們存儲爲某種形式的字典,但不幸的是,它們不會像您輸入的內容那樣具有「內置」的語言感覺。

否則,擴展方法可能是您最好的選擇 - 但他們需要重新編譯+新庫,只要您想添加新的轉換。