TL;博士
我的习惯
[Serializable]
类重写
GetHashCode
和
Equals
,所以多个不同的对象可以是“相等的”,看起来
BinaryFormatter
电话
OnSerialized
只有一次,但是打电话
OnDeserialized
两次当两个相等但不同时(
ReferenceEquals
==
false
)图形中存在对象。
我能做些什么来确保每次打电话给
[OnSerialized]
方法
[OnDeserialized]
方法只调用一次,前提是我想保留
方法
和
等于
实现?
理想情况下,我想指导
二进制格式
使用我的自定义实现
IEqualityComparer
对于我的自定义类,这样它就不会试图“合并”不同但相等的实例。
出身背景
该类包装了一个refcounted非托管句柄,该句柄使用
二进制格式
[串行化]
处理程序,假设对象将被反序列化一次,这在上面的场景中是违反的(反序列化后将丢弃序列化位)。