Non c'è niente di integrato che ti permetta di intercettare un oggetto di cui non puoi controllare l'istanza. Allo stesso modo, non ci saranno nuove strutture per questo nel prossimo 4.0.
Se è possibile controllare esemplificazione:
- Se l'oggetto può essere MarshalByRefObject è possibile utilizzare RealProxy.
- È possibile utilizzare diversi contenitori IOC, ad es. LinFu, Castle Dynamic Proxy
- È possibile utilizzare uno strumento come PostSharp, Mono Cecil o Microsoft CCI di riscrivere gli assembly con le intercettazioni come una fase di post di compilazione.
Se non è possibile controllare esemplificazione
- È possibile utilizzare ICorDebug - il Net debug API che sono davvero difficili da usare e pesante.
- È possibile utilizzare ICorProfiler - le API di profilo .Net, dove sono anche piuttosto complicate da usare.
In alternativa, si potrebbe guardare un linguaggio dinamico come IronRuby, che ha un built-in alias_method
e define_method
bontà (che permette di ridefinire nulla), in modo da intercettazioni cotto in.
. NET 4.5 sta introducendo un metodo per i metodi ReJIT che fornisce un altro hook per l'intercettazione del metodo (a condizione che tu non stia eseguendo un GC concorrente/bg e il metodo non sia delineato)
fonte
2009-08-26 01:13:13
fortemente correlati: http://stackoverflow.com/questions/25803/how-do-i-intercept-a-method-call-in-c –
E 'fortemente legato? Non ho classi a cui aggiungere attributi. – karmasponge
Attualmente sto studiando il 'RealProxy' e il 'Profile Injection Application Block'. – karmasponge