I'm thinking of having an "Event" class that contains the validation, and the actual operation takes an instance of that class and makes the change, with guarantees that the validation has already been performed.
But then that I have to hide the constructor somehow to be able to use context parameters for the construction…