I have a fairly complex class structure and I want to serialize some of it to a file. Some of the classes to be serialized are loaded at runtime from external plugins (all of them implement my IDocumentContent interface). What I want to know is: if I serialize a IDocumentContent plugin that has members that are not from the IDocumentContent interface (i.e. plugin specific settings, etc.) are those serialized as well?

The second question is this: Can the data is deserialized onto a machine with IDocumentContent interface, but not the plugin that created it (with its own data)?

Last question, if so, if the data is again re-serialized, will the plugin specific data remain so that it can be deserialized onto the original machine with the plugin?

Unfortunatly, I'm not at a stage where I can test this. I need to design around the answers to this. Should the IDocumentContent inferface include a PluginSpecificData property of type ISerializable?