C# 3.0 .Net序列化

C# 3.0 .Net序列化,c#-3.0,C# 3.0,与IDeserializationCallback.OnDeserializationCallback.OnDeserialization相比,OnDeserialization不是多余的吗?如果您阅读和上的文档,您将看到该接口最初是在.NET 1.0中实现的,而该属性是在.NET 2.0中添加的,以及一些额外的相关属性,这些属性为序列化/反序列化过程提供了更细粒度的控制 从OnDeserializedAttribute备注部分: 此属性可以用来代替 IDeserializationCallba

IDeserializationCallback.OnDeserializationCallback.OnDeserialization

相比,OnDeserialization不是多余的吗?如果您阅读和上的文档,您将看到该接口最初是在.NET 1.0中实现的,而该属性是在.NET 2.0中添加的,以及一些额外的相关属性,这些属性为序列化/反序列化过程提供了更细粒度的控制

从OnDeserializedAttribute备注部分:

此属性可以用来代替 IDeserializationCallback 接口

所以要回答你的问题,是的,它们是多余的。一个有根据的猜测是,基于属性的标记是实现这一点的首选方法,因为它们为您提供了更大的灵活性,并且不需要单独的接口来使用。接口存在是因为如果他们删除它,它将破坏与旧代码的向后兼容性