Consider deriving from IExtensibleDataObject.