可能重複:
C#: implicit operator and extension methodsc#是否可以使用擴展方法來實現隱式轉換?
我有一個共同的庫項目定義多種類型(沒有什麼太複雜,只是性質爲主)。兩個項目引用這個公共庫:一個客戶端應用程序和一個web服務。
我的意圖是讓web服務返回類型T,然後在客戶端應用程序中使用T.通常我不得不再次將Web服務返回的類型轉換爲T(因爲代理類,T返回爲WebService.T),但我希望使用implicit conversion來代替。
由於原始的Common類沒有Web服務代理類的知識,我想知道是否可以使用extension methods來實現隱式轉換。有點像
public static implicit operator MyObject(this MyProxyObject value)
{
//stuff
}
這是編譯器根本不喜歡的東西。
這樣的事情甚至可能嗎?
更新
好吧,首先,我有2.0框架引用,這樣解釋我的編譯器的問題。
其次,我可以通過創建一個方法擴展「ToModel」(或其他)來實現轉換。所以就業務目標而言,我可以通過調用WebService.T.ToModel()來輕鬆轉換我的類型。
雖然我懷疑這可以使用隱式轉換(或其值得的麻煩)。
要明確,隱式轉換不是在類T中聲明,而是在WebServiceManager上聲明。所以封閉類型(靜態方法所在的類)不是T類型,而是類型WebServiceManager,因爲我不想在T的聲明中執行轉換(因爲它不應該具有Webservice.T代理類的知識)。 – MoSlo