因爲有時候,我真的需要一個朋友。如何在C#和VB.NET中模擬C++的朋友?
我能想到的招數如下的:
- 只讀包裝 - 像ReadOnlyCollection。朋友保持指向可修改對象的指針,而其他人只能訪問包裝器。
- 寫代理 - 朋友給對象的構造函數一個委託的引用作爲參數之一,構造函數用一個地址填充到可用於修改對象的私有方法。
- 反思 - 顯然是一個壞主意。包括完整性。
- 多個裝配 - 將你的朋友放在一個單獨的裝配中,並設置修改方法
internal
。 - 公開可修改對象,但爲修飾符方法添加註釋「這是一種基礎結構方法 - 不要調用它!」
- Nested classes.
- 將
System.ComponentModel.EditorBrowsable(System.ComponentModel. EditorBrowsableState.Never)
屬性添加到您希望只有朋友才能訪問的成員以將其隱藏到智能感知中。 - 隱式接口實現 - 請參閱註釋。
這份清單是否詳盡?任何人都可以按照性能下降的順序排序嗎?減少整潔的順序?任何建議何時使用哪些?
你可能忘記了嵌套類型。 – 2010-12-20 17:30:05
而且,當然還有隱式的接口實現。沒有真正隱藏該方法,但您需要做一些操作才能訪問它(轉換到此界面)。 – Alex 2010-12-20 17:35:37
如何使用嵌套類型來模擬朋友? – 2010-12-20 17:42:09