参加练习考试,考试说我错了。用黄色标记的答案是假定的正确答案。
在下面的引用中,我认为粗体标记的部分是错误的:“Serializable属性不是由派生类继承的,因此如果您只使用Serializable属性标记Encyclopedia类,运行时将抛出尝试序列化名称字段时出现异常“。
我实际创建了一个示例项目,其中包含Animal
类和从中派生的Cat
类。我标记了Cat
类[Serializable]
而Animal
类不是。
我能够成功序列化和反序列化Cat
类,包括Animal
属性。
这是.NET版本问题吗?考试是70-536,所以它的目标是2.0。
答案 0 :(得分:6)
是的,基类也需要可序列化。一些简单的测试代码:
public class Animal
{
public Animal()
{
name = "Test";
}
public string name { get; set; }
}
[Serializable]
public class Cat : Animal
{
public string color {get; set;}
}
var acat = new Cat();
acat.color = "Green";
Stream stream = File.Open("test.bin", FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, acat);
stream.Close();
当您尝试序列化时,会出现此错误:
在程序集'SerializeTest中输入'SerializeTest.Animal',Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'未标记为可序列化。
编辑 - 我注意到你做了同样的事情,但它对你有用。你有使用的代码吗?这个是在.net 4中,但我不认为它在版本之间有太大的变化。