Currently, attempting to insert or set a TrackedRecord<T> ensures that any business logic is enforced. This is not done, however, when calling Remove() or Clear(). This is important not only because the business logic might prevent a value being reset to null, but also because removing a value might require updating the state of the Topic. This is a rare scenario, and it's unlikely to be a major issue—but it should be easy to fix with the TopicPropertyDispatcher, and there's no reason not to lock this backdoor.
Currently, attempting to insert or set a
TrackedRecord<T>ensures that any business logic is enforced. This is not done, however, when callingRemove()orClear(). This is important not only because the business logic might prevent a value being reset tonull, but also because removing a value might require updating the state of theTopic. This is a rare scenario, and it's unlikely to be a major issue—but it should be easy to fix with theTopicPropertyDispatcher, and there's no reason not to lock this backdoor.