2010-10-19 20 views
5

Esiste un modo per rintracciare e intercettare le chiamate ai valori delle proprietà implementate automaticamente?Tracciamento delle chiamate alle proprietà implementate automaticamente

Mi piacerebbe avere il codice che sembra un po 'come questo:

[Tracked] 
public int SomeProperty { get; set; } 

Idealmente l'attributo sarebbe in grado di intercettare le modifiche ai valori delle proprietà. È possibile?

Quello che non voglio è che un secondo pezzo di codice giri su un oggetto più tardi e richieda i valori, ma piuttosto l'attributo dovrebbe virare il valore così come viene impostato.

risposta

4

No. Il modo in cui lo si fa è non utilizzando le proprietà automatiche. L'unica soluzione possibile è quella di utilizzare qualcosa come Castle AOP per creare wrapper automatici attorno alla tua classe e avere quella traccia delle modifiche, ma questo è un compito molto difficile da implementare.

3

Si dovrebbe essere in grado di farlo con un framework AOP, come ad esempio PostSharp (che noto è ora commerciale). Ce ne sono alcuni altri collegati here, ma alcuni link sono morti.

3

Se si desidera una soluzione che funzioni in fase di esecuzione, è necessario un framework di programmazione orientata agli aspetti (AOP); Ho usato CciSharp con un certo successo. Non è maturo come PostSharp, ma funziona con lo stesso principio di base: modificherà il codice già compilato, producendo un altro assembly.

Se si desidera semplicemente questo test (o profilazione), esiste un'altra opzione: Microsoft Moles (che è anche gratuito). Funziona in modo molto diverso; usa un tipo di iniezione "deviazione" per cambiare il programma mentre è in esecuzione, intercettando i metodi getter e setter della proprietà.

Problemi correlati