2010-08-10 79 views
4

当试图序列化我的类和子类时,发生了一堆未捕获的异常之后,我终于明白了我的问题:[Serializable]在应用于子类时不会继承一个基类。一般来说,我仍然对C#属性非常模糊,但我确实明白,在创建自定义属性时,程序员能够启用属性的自动继承。覆盖C#中的内在属性的继承

有没有办法重写[Serializable]的继承?是否有充分的理由说明为什么它从一开始就没有完成,并且/或者首先这样做会是一个坏主意?我希望所有基类的所有子类都是可序列化的,所以不得不将这个属性添加到我创建的任何新子类中。

谢谢!

回答

5

有一个很好的理由,它没有在第一个地方做 - 只是因为基类是可序列化的并不意味着派生类自然是。

哎呀,object是序列化 - 如果串行性是遗传的,这将意味着在.NET每类将是序列化:)

你不能“越权”,要么 - 你指定它在每类。我认为这是一件好事,实际上 - 当您添加属性时,您应该对该类进行心理检查,并检查确实对序列化它有意义。

+6

你有没有厌倦总是正确的? – 2010-08-10 19:46:25

+0

关于此的一个有趣的笔记。实现'ISerializable' **的类也必须标记为'SerializableAttribute'。据推测,这允许运行时确定是否有可能反序列化序列化元数据中引用的类型(因为在该点没有类型的实例可用)。 – LBushkin 2010-08-10 19:57:52

+2

@Jimmy Hoffa,我想乔恩偶尔错过一个错误的答案来打破单调的正确。然而,经过进一步检查,结果是错误的答案也是正确的。 – 2010-08-10 20:20:34