In questo MSDN Magazine articolo Peter Vogel descrive Extension Objects partten .
Ciò che non è chiaro è se le estensioni possono essere successivamente implementate dal codice client che risiede in un assembly separato .
E se è così come in questo caso l'estensione può accedere ai membri privati dell'obiettivo che sono stati estesi ?
Ho abbastanza spesso bisogno di impostare diversi livelli di accesso per classi diverse.
A volte ho davvero bisogno che i discendenti non abbiano accesso al mebmer ma la classe separata lo fa. (buone classi di vecchio amico)
Ora risolvo questo in C # esponendo le proprietà callback nell'interfaccia della classe esterna e impostandole con metodi privati. Ciò consente anche di regolare l'accesso: sola lettura o lettura | scrittura in base all'interfaccia desiderata.
class Parent
{
private int foo;
public void AcceptExternal(IFoo external)
{
external.GetFooCallback = () => this.foo;
}
}
interface IFoo
{
Func<int> GetFooCallback {get;set;}
}
L'altro modo è implementare esplicitamente una particolare interfaccia.
Ma sospetto che esistano altri attacchi di sospetto.
Aggiornamento 1
Il articolo di New Peter lo rende un po 'più chiaro.