時々、私は本当に友人が必要です。C#とVB.NETでC++の友達をシミュレートするには?
私は、次のトリックを考えることができます:
- 読み取り専用のラッパーを - ReadOnlyCollectionのように。友人はポインタを変更可能なオブジェクトに保持しますが、他の人はラッパーだけにアクセスできます。
- 書込み委任 - フレンドはオブジェクトのコンストラクタにパラメータの1つとしてデリゲートへの参照を渡し、コンストラクタはそのオブジェクトを変更するために使用できるプライベートメソッドのアドレスを埋め込みます。
- 反射 - 明らかに悪い考えです。完全性のために含まれています。
- 複数のアセンブリ - あなたの友達を別々のアセンブリにまとめ、修飾子メソッドを
internal
に設定します。 - 変更可能オブジェクトを公開しますが、修飾子メソッドにコメントを追加します。「これはインフラストラクチャメソッドです - 呼び出さないでください!
- Nested classes.
- 友人のみにアクセスしてIntelliSenseから非表示にするメンバーに属性を追加します(
System.ComponentModel.EditorBrowsable(System.ComponentModel. EditorBrowsableState.Never)
)。 - 暗黙のインターフェイスの実装 - コメントを参照してください。
このリストは網羅的ですか?誰でもパフォーマンスを低下させる順番で並べ替えることができますか?減少したきちんとした秩序?どちらを使うべきなの?
おそらくネストされたタイプは忘れています。 –
もちろん、暗黙のインターフェイス実装。実際にメソッドを隠すわけではありませんが、それにアクセスするには何かをする必要があります(このインターフェイスにキャスト)。 – Alex
ネストされたタイプを使用して友人をシミュレートするにはどうすればよいですか? –