Сериализуемое наследование - PullRequest
43 голосов
/ 08 октября 2008

Если что-то наследуется от класса Serializable, остается ли дочерний класс Serializable?

1 Ответ

80 голосов
/ 08 октября 2008

Это зависит от того, что вы имеете в виду, быть сериализуемым. Если вы имеете в виду маркер CLI (то есть атрибут [Serializable]), то это наследуется , а не (доказательство ниже). Вы должны явно пометить каждый производный класс как [Serializable]. Однако, если вы имеете в виду интерфейс ISerializable, то да: реализации интерфейса наследуются, но вы должны быть осторожны - например, с помощью метода virtual, чтобы производные классы могли вносить свои данные в сериализацию.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(typeof(Foo).IsSerializable); // shows True
        Console.WriteLine(typeof(Bar).IsSerializable); // shows False
    }
}

[Serializable]
class Foo {}

class Bar : Foo {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...