Added new interface ISetValueCallback to the Starcounter assembly, in the Starcounter.Advanced namespace. This interface allows applications to subscribe to the updating of database attributes.
Added framework method InvokeSetValueCallback to DbState, used as the entrypoint the wever emits a call to every time a database class attribute is set on a database class implementing ISetValueCallback. This method is responsible for calling the actual callback.
Extended the weaver DatabaseTypePolicy with method ImplementSetValueCallback that can be used to determine if a database class implement ISetValueCallback or not.
Made the weaver analyser discover database classes that implement ISetValueCallback and store them in an index.
Extended the weaver transformation engine with support for generating binaries with emitted calls to the ISetValueCallback-interface (via DbState).
Added new class SetValueCallbackInvoke to Starcounter (namespace Starcounter.Internal) that will act as the facade for the weaver when emitting code that are to invoke callbacks of ISetValueCallback.
Added helper method SetValueCallbackInvoke.AttributeIndexToColumName, that are to be used to translate indexes to their corresponding column name (which is what we want to pass to ISetValueCallback).
Redesigned the ISetValueCallback interface according to the second option ("2. Switch to one method per data type") in this comment: https://github.com/Starcounter/Starcounter/issues/2420#issuecomment-63812826.
Made all SetValueCallbackInvoke invoke their corresponding target method in the new ISetValueCallback interface, after first doing the necessary column name lookup.
Removed obsolete methods in ISetValueCallback and DbState that implemented first version of the set value callback mechanism.
Extended the internal weaver class DbStateMethodProvider to support additional lookup of SetValueCallback invocation entrypoint methods and cache these while doing lookup of the basic DbState methods.
Extended the API of the weaver DbStateMethodProvider class to return an optional SetValueCallback infrastructure method reference to the weaver when asking for the Set accessor method (GetSetMethod).
Adapted the weaver transformation component to recent changes in ISetValueCallback and the intrastructure SetValueCallbackInvoke class the weaver emit calls into.
Merge branch 'develop' into issue/2420
Merge branch 'issue/2420' into develop. This merge includes everything that introduce the new feature supported by the (also new) ISetValueCallback interface, as described in #2420.