我在transcender上遇到了这个问题:
如果在反序列化期间不需要字段的值,您应该对字段应用什么?
我 = [非序列化],答案 = [可选字段]
我的直觉反应是 NonSerialized 但 Transcender 说我错了。就 [Nonseralized] 属性而言,我很清楚应该注意什么,但我仍然非常希望这一点得到澄清。
据我所知,前者与同一程序集的新旧版本之间的版本冲突有关。后者更关心不序列化字段FULLSTOP。还有什么可以让这两者区分开来的吗?MSDN 并没有真正说明这一点,因为它们都用于 BinaryFormatters 和 SoapFormatter 以及使用 XMLIgnoreAttribute 的 XMLFormatter。
我的第二个问题是你能混合和匹配这两个属性中的任何一个吗?我还没有使用它们。
只是把这个扔出去,但我的回答是否与 [OnDeserialized] 和 IdeserilizationCallback 接口的实现方式有关?
更新:
我知道可选字段属性不会序列化数据成员持有的值,但 NonSerialized 甚至不会序列化数据成员或其值。