因为有时候,我真的需要一个朋友。如何在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