Es posible que desee encapsular todos sus datos (que desea supervisar para el cambio) dentro de los descriptores de acceso get/set (propiedades alias).
Entonces, en el conjunto de acceso, compruebe si el valor ha cambiado, ponerlo en valor nuevo, y:
- conjunto _dirty true (si es necesario verificarlo más tarde)
o
- aumento algún evento a su gusto
Algunas notas sobre CRC: incluso si tiene un algoritmo CRC/HASH que no colisiona para su objeto, debe tener hash original en algún lugar. Pero es probable que los hash simples se dupliquen, por lo que nuevamente tienes problemas de velocidad.
GetHashCode no es útil para determinar si un caso dado ha cambiado, que está relacionado con la identidad de la instancia y por lo tanto debe atributos único caso hash que están realmente relacionado con identiy, no todos y cada valor en tu instancia. –
¿Tiene el código fuente para el tipo en cuestión o tiene que funcionar en tipos arbitrarios? –