我試圖做類似如下:如何編寫從接口到另一種類型的隱式轉換?
public class SomeWrapper : ISomeWrapper{
public static implicit operator ActualRec(ISomeWrapper someWrapper)
{
return ((SomeWrapper)someWrapper).SomeInfo;
}
}
但這個代碼失敗,他說: 「無論是參數或返回類型的類型必須爲SomeWrapper的」。
我瞭解編譯說明的問題。但我需要這種類型轉換b,因爲在我的應用程序中,我使用ISomeWrapper作爲變量,存儲SomeWrapper實例。 (另外,SomeWrapper是唯一實現ISomeWrapper的類)。
如果ISomeWrapper接口與我在具體類中知道的類型有什麼辦法進行隱式轉換?
編輯: 正如所有人所暗示的,在C#中不可能從接口進行隱式轉換。
我需要這樣做的原因是什麼?我想允許(隱式地)給ISomeWrapper的用戶調用需要ActualRec作爲參數的方法,而不給予ISomeWrapper的用戶訪問ActualRec的方法/屬性的權限。
例如, 如果我包括ISomeWrapper屬性ActualRec然後ISomeWrapper的用戶將能夠調用方法提供ActualRec(喂,someWrapper.ActualRec.Dispose()),我不希望公開。
這就是嘗試尋找隱式轉換的原因。
另外,我不想在應用程序中使用SomeWrapper。
請建議是否有一些概念/模式來完成這項工作。
感謝您的關注。
「SomeWrapper是唯一實現ISomeWrapper的類」 - 即揮動着一個大紅旗,上面寫着「糟糕的代碼味道」。如果只有一個類實現接口,那麼接口的值是多少?隨處使用課程。 – 2011-04-21 15:57:28
@Eric:這不是沒有意義的,因爲我使用這個接口進行單元測試。 – 2011-04-22 12:33:21