C# - .net 3.5Un metodo che viene eseguito ogni volta che si accede a una proprietà di classe (ottieni o imposta)?
Ho una famiglia di classi che ereditano dalla stessa classe base. Voglio che un metodo nella classe base sia invocato ogni volta che si accede a una proprietà in una classe derrived (get o set). Tuttavia, non voglio scrivere codice in ogni proprietà per chiamare la classe base ... invece, spero che ci sia un modo dichiarativo per "affondare" questa attività nella classe base.
Aggiungendo un po 'di pepe al requisito, ho bisogno di determinare il nome della proprietà a cui si è avuto accesso, il valore della proprietà e il suo tipo.
Immagino che la soluzione sia una combinazione intelligente di delegato, generici e riflessioni. Posso immaginare di creare un certo tipo di array di assegnazioni di delegati in fase di esecuzione, ma l'iterazione su MemberInfo nel costruttore influirà sulle prestazioni più di quanto mi piacerebbe. Di nuovo, spero che esista un modo più "dichiarativo" diretto per farlo.
Tutte le idee sono più apprezzate!
Vorrei anche sottolineare che mentre INotifyPropertyChanged ti permette di passare un nome di proprietà, non ci vuole uno scienziato missilistico per portare il concetto un ulteriore passo avanti e scrivere la tua versione dell'interfaccia che permetta anche il valore della proprietà ecc. passato. Anche se quello che stai proponendo, sebbene possa sembrare intelligente in teoria, aggiungerà un sacco di spese generali alla tua applicazione, e dovrai considerare di avere degli switch di compilazione condizionali nel tuo codice. – slugster