Да, базовый класс также должен быть сериализуемым. Несколько простых тестовых кодов:
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.Animal' в сборке 'SerializeTest, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null' не помечена как сериализуемая.
edit - я заметил, что вы сделали то же самое, но у вас это сработало. У вас есть код, который вы использовали? Это в .net 4, но я не думаю, что он сильно изменился между версиями.