格式肯定会改变,因为供应商会向他们的组件添加特性。序列化简单地遍历所有已发布的属性并将它们保存到一个流中。当它们被读回时,从流中读取的每个属性都将被设置回组件。如果该属性不再存在,那么就有问题了。除了一些基本的异常处理之外,我不认为你能做什么。
保证兼容性的最好方法是自己进行序列化。
用于序列化已发布属性的内置的基于RTTI的系统很容易受到组件更改的影响。只要旧的属性保存在新对象中,就可以管理继续向前。也就是说,你保持属性界面不变,但如果你愿意,你可以丢弃其中的内容。往回走会更糟——因为新版本保存的属性不能在旧版本加载中打开,这将是一个问题。
有一些组件/库(http://www.torry.net/quicksearchd.php?String=RTTI&Title=Yes)可以添加XML格式的序列化,这可能会有所帮助,因为您可以选择跳过不知道的内容。
您仍然需要注意如何设计发布的内容,并且可能应该找到一种方法来“忽略但传播”当前版本不理解的内容。这将允许您以较新的格式打开和更改文件,同时试图保留较新的属性,而不是剥离它们。