No hay nada incorporado que le permita interceptar un objeto que no puede controlar la creación de instancias. Del mismo modo, no habrá nuevas instalaciones para esto en el próximo .NET 4.0.
Si usted puede controlar de instancias:
- Si su objeto puede ser MarshalByRef puede utilizar RealProxy.
- Puede usar bastantes contenedores de COI, p. Ej. LinFu, Castle Dynamic Proxy
- se puede utilizar una herramienta como PostSharp, Mono Cecil o Microsoft CCI a reescribir sus asambleas con las intercepciones como un paso posterior a la compilación.
Si no puede controlar instanciación
- Puede utilizar ICorDebug - la depuración .Net API que son muy difíciles de usar y pesado.
- Puede usar ICorProfiler - las API de perfilado .Net, que también son bastante complicadas de usar.
Alternativamente, usted podría mirar a un lenguaje dinámico como IronRuby, que tiene un built-in alias_method
y define_method
bondad (que le permite redefinir nada), por lo que la interceptación cuece en.
. NET 4.5 está introduciendo un método para los métodos ReJIT que proporciona otro enlace para la interceptación del método (siempre que no esté ejecutando un GC concurrente/bg y el método no esté en línea)
fuertemente relacionada: http://stackoverflow.com/questions/25803/how-do-i-intercept-a-method-call-in-c –
¿Está fuertemente relacionado? No tengo ninguna clase a la que pueda agregarle atributos. – karmasponge
Actualmente estoy investigando el 'RealProxy' y el 'Bloque de aplicaciones de inyección de perfiles'. – karmasponge