2013-08-01 59 views
0

我想知道是否有一個現有的類(如Monotouch的UIColor)如果有一種方法來擴展構造函數。這將使我們更容易與圖書館合作。可以在c#中擴展構造函數嗎?

public static class UIColorExtender 
{ 
    public UIColor(string hex) 
    { 
     this = ConvertHexToUIColor(hex); // This isn't necessarily the code, just filler. 
    } 
} 
+0

不僅不,你有一個靜態類的實例構造函數。做你自己的一個大忙,並通過Jeff Richter通過C#抓取clr。跳過前幾章,直到閱讀本書的其餘部分。 – Will

+2

@他將在靜態類中有一個構造函數,因爲他試圖聲明一個在靜態類中做的擴展方法......我不認爲代碼編譯所以沒關係,它不會像它會結束在他的項目中。當然,他沒有第一個arg的'this',所以它不是很清楚,但它被稱爲UIColorExtender。 – evanmcdonnal

+1

您也可以創建一個工廠來爲您創建對象。 – mao47

回答

1

也許這個問題試圖達到與你一樣? UIColor from Hex in Monotouch

當在的UIColor類看,似乎使用比用於R,G,B和α僅有4浮點值等格式時,它主要是使用一個工廠模式:

UIColor.FromHSB(float, float, float) 
UIColor.FromWhiteAlpha(float, float) 

..和更多

所以我認爲最好的解決方案就像Luis在上面的問題。

+0

這就是我們所用的,因爲它在我們使用它的地方最有意義。謝謝 –

4

不,目前在C#中沒有這種方式。從類繼承並使用您自己的構造函數邏輯。使用新課程代替舊課程。

0

構造函數不能被擴展。您可以從類繼承並實現您自己的類,或者如果相關類未充滿只讀屬性,請在構造函數之後創建一個初始化方法來調用。

相關問題