1

我正在使用自定义序列化对我的应用程序中的数据进行序列化,即我存储的每个类都有[Serializable]属性和实现ISerializable。被序列化的对象图相当复杂,对象/类之间有很多交叉引用。序列化工作,但它很慢。:(

通过在每个相关类的方法中设置断点GetObjectData,我发现我得到的命中数比得到的对象数多得多。

我很困惑——我对序列化框架的理解是它只会存储每个对象一次,即使对象图包含对它的多个引用。我假设这意味着每个对象的GetObjectData方法在保存期间只需要调用一次。我错了吗?

如果是这样,我可以用这种方法做些什么来减少对我的类GetObjectData方法的调用次数吗?

谢谢。

4

1 回答 1

3

MSDN 文档不保证每个对象实例只有 1 次调用 。

您是否尝试过使用不同的格式化程序?这里有一些评论,大意是正在做一些选定的工作来改进这一点。专门用于 Indigo(又名 WCF)。

不保证在序列化期间每个对象实例只调用一次此方法。因此,该方法应该以这样一种方式实现,即无论它被调用多少次,它的行为都是相同的。

于 2010-10-05T16:40:07.973 回答