2010-10-19 18 views
5

¿Hay alguna forma de que pueda rastrear e interceptar llamadas a valores en propiedades que se implementan automáticamente?Realizar un seguimiento de las llamadas a las propiedades implementadas automáticamente

me gustaría tener código que se ve un poco como esto:

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

Lo ideal sería que el atributo sería capaz de interceptar los cambios en los valores de las propiedades. es posible?

Lo que no quiero es que tenga una segunda pieza de código que gire sobre un objeto más adelante y solicite los valores, sino que el atributo debe ajustar el valor tal como se establece.

Respuesta

4

No. La forma de hacerlo es no utilizando propiedades automáticas. La única solución posible que existe es usar algo como Castle AOP para crear contenedores automáticos en toda la clase y hacer un seguimiento de los cambios, pero este es un trabajo muy difícil de implementar.

3

Debería poder hacer esto con un marco de trabajo AOP, como PostSharp (que ahora observo que es comercial). Hay algunos más vinculados here, pero algunos de los enlaces están muertos.

3

Si quiere una solución que funcione en tiempo de ejecución, querrá una estructura de programación orientada a aspectos (AOP); He usado CciSharp con cierto éxito. No es tan maduro como PostSharp, pero funciona con el mismo principio básico: modificará su código ya compilado, produciendo otro ensamblaje.

Si solo quieres esto para probar (o perfilar), entonces hay otra opción: Microsoft Moles (que también es gratis). Funciona de manera muy diferente; usa un tipo de inyección de "desvío" para cambiar el programa mientras se está ejecutando, interceptando los métodos getter y setter de la propiedad.

Cuestiones relacionadas