very similar, the dictionary provides indexing.
I use a dictionary<objectId, CustomDataObject> meaning the customdataobject (value) is accessed by the objectid (key)
Each key value pair is quickly accessible by the key
This is important in the example as I am dealing with per object data and it allows me to access the correct data.
In your case, this could be applicable where you create a dictionary and upon drawing creation you construct some data about the drawing, then when the save event fires you save a copy of that data, and when the tobedestroyed event fires you delete the data from your dictionary