.NET: Является ли публичное объявление требованием, чтобы класс был сериализуемым? - PullRequest
0 голосов
/ 10 июня 2009

Является ли публичное объявление требованием, чтобы класс был сериализуемым? Я просматривал некоторый код, где все классы, помеченные как [Serializable], также были объявлены общедоступными. Я не смог найти официальную документацию, подтверждающую это.

Ответы [ 4 ]

3 голосов
/ 10 июня 2009

Нет, для Serializable такого требования нет. Неудивительно, что вы видите Serializable в открытых классах, поскольку данные, которые будут сохранены в потоке, с большой вероятностью будут доступны другим, и поэтому мотивируют выбор открытого класса.

0 голосов
/ 10 июня 2009

Зависит от сериализации. AFAIK, двоичная сериализация (т. Е. - [Serializable]) не требует публичного доступа к элементу, она просто делает вуду, чтобы сделать снимок класса в памяти.

XmlSerialization (и JsonSerialization и т. Д.) Обычно требуют, чтобы класс был общедоступным, с конструктором по умолчанию без параметров и автоматически сериализовал все открытые свойства или поля.

0 голосов
/ 10 июня 2009

Не всегда верно, возможно, у вас есть объект, который имеет внутренний класс, который представляет состояние другого объекта и является Serializable, что также вполне допустимо

0 голосов
/ 10 июня 2009

Я не очень хорошо знаю .net. а как насчет частных вложенных классов?

Если (публичный) внешний класс является сериализуемым, то, вероятно, вы захотите также сериализовать любые внутренние классы.

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