> 
> Thanks for answer! I want to detect instvar writes only for objects 
> (instances), that was previously fetched from external "datastore" (DB like), 
> so I can persist changed objects only back to the datastore at the end of 
> transaction. These objects can be any existing class (Pharo classes, some 3rd 
> party libs classes, everything), so 1) injecting a class is overkill (affects 
> all objects in the image) 2) impossible to rewrite #class method for every 
> existing class.
> 
> Injecting object-centric metalinks via anonymous subclass breaks up many 
> things, when I want to treat injected object like any othres (IMHO).
> 
> If you will be able to avoid this issue, that would be extra cool :-]
> 
> Note: for now, best for my "instvar writes detection" would be probably hack 
> Object>>#attemptToAssign:withIndex: or 
> ProtoObject>>#modificationForbiddenFor:index:value: and make my "datastore 
> fetched objects" read only (via Object>>#setIsReadOnlyObject:).
> 

The read-only approach has the nice property that it works for collections, 
too. The meta-link model falls short there (you can not “put a link on offset 4 
in this array”, but would need to put it on at:put:)

I started to play with it to see what is needed to create a generalised change 
detector with read only:
        https://github.com/MarcusDenker/ChangeDetector

        Marcus


Reply via email to