Если вы не измените номер версии вмещающей сборки, то добавление базового класса не должно быть проблемой для двоичной сериализации, а для XML это вообще не имеет значения, поскольку оно очень слабо связано с реальным типом.
Просто убедитесь, что база также помечена как [Serializable] для двоичной сериализации.Я только что проверил и подтвердил это.
Сериализировал следующий класс с помощью Binary Formatter
[Serializable]
public class Test
{
public string Name { get; set; }
}
Получил следующий кодированный base64 вывод:
AAEAAAD ///// AQAAAAAAAAAMAgAAAEpDb25zb2xlQXBwbGljYXRpb24xLCBWZXJzaW9uPTEuMC4wLjAs IEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAIENvbnNvbGVBcHBsaWNhdGlv bjEuUHJvZ3JhbStUZXN0AQAAABU8TmFtZT5rX19CYWNraW5nRmllbGQBAgAAAAYDAAAABWhhc2FuCw ==
Затем добавляют следующий базовый класс для теста:.
[Serializable]
public class Base
{
public void Dhuz() { }
}
И де сериализовано base64 закодирован вещь снова успешно без проблем