One question concerning Dispose:
Is it ok the resuse "Dispose" just for Raising an Disposed-Event, so listeners can assume the object is dead and react to that - although the object never held any unmanaged resources and may still be referenced?
Currently in my game (which is seperated into Model, View, Control) whenever something gets destroyed* (e.g. a tree or monster) i call the Dispose method, that raises an event, which causes the model to unregister that object, and usually the view also listens to that event and also removes the visual representation (if any).
Fortunately even if what i did is a no-go, its easy to refactor
*by destroyed i really mean that the object can be destroyed.
When a tree first gets "destroyed" it remains in "dead" ("destroyed") state for a few seconds, before it is really removed from the model (so Disposed is called).