How are dropped objects constructed

When I drop a GoBasicNode from a GoPalette onto my GoView, the constructor (blank or ISerializable) one is never fired?

How are these “copies” created?

GoDocument.CopyFromCollection does a first pass over the objects by calling GoObject.CopyObject on each one. Then it does a second pass by calling GoObject.CopyObjectDelayed, which might be needed to fix up references.
GoObject.CopyObject is implemented using Object.MemberwiseClone.
It’s rare for a programmer to care about when a GoObject is constructed. It’s usually only important when a GoObject is Add’ed to a GoLayer.

Ok, well I have a class that inherits from GoBasicNode.
I have an observer for event that my class raises. When I drag it from my pallete to my view, the observer is still attached to the new copy.
Is this the intended design? It’s copying the attached handlers?

Yes, that’s the intended design.
If you don’t want there to be any GoObject Observers on the newly copied node, you can either override GoObject.CopyObjectDelayed to be a no-op (this will cover all cases of copying the node), or you can implement a GoView.ExternalObjectsDropped event handler so that you can remove the observer(s) from the copied node(s) that were created due to the drop.

Just to clarify why this is important to me, I have an node on a palette, with an observer. When the node is dropped on the view, the observer for the palette no longer is relevant, I need to rid myself of it in the copy.

I replied again before refreshing, didn’t see your post. let me investigate what you’ve said…

I have a suspicion that you might be better served by implementing a GoDocument.Changed event handler on the GoPalette’s Document, in order to notice any changes that happen to any items in the palette.