В какой архитектуре используется system.runtime.serialization.ISerializable? - PullRequest
3 голосов
/ 09 мая 2011

У меня есть некоторые классы, которые реализуют свою собственную сериализацию / десериализацию, но я делаю все это без реализации system.runtime.serialization.ISerializable.поэтому мой вопрос в том, что именно является преимуществом использования system.runtime.serialization.ISerializable?

. В каком примере нам потребуется реализовать system.runtime.serialization.ISerializable?

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

Ваша сериализация не интегрируется со стандартными механизмами сериализации .net. Вы не можете использовать его с BinaryFormatter. ISerializable позволяет: а) управлять сериализацией; б) интегрировать ее в стандартный механизм двоичной сериализации.

Также очень странно, что вы решили написать собственную сериализацию. Это довольно дорого для написания эффективной сериализации производственного качества, особенно когда есть готовые к использованию бинарные и XML-сериализации в .net и пара отличных сторонних, таких как Protobuf и Thrift.

Отличный пример приведен на странице ISerializable в MSDN.

Один реальный пример из жизни, когда вы хотите подключиться к двоичной сериализации, это то, что она теряет часовые пояса при сериализации DateTime. (По крайней мере, в .net 2.0)

2 голосов
/ 09 мая 2011

ISerializable используется BinaryFormatter, когда вам нужно сохранить данные, которые немного сложнее, чем просто , сериализуя поля - например, вы хотите обрабатывать данные по-другому (может быть сжато -например, словарь довольно большой в памяти, но может быть просто списком ключей / значений в сети).Аналогично «связанный список» - вы бы снова захотели выполнить итерацию этого в сериализации одного объекта (список), а не просто сериализовать первый узел, и чтобы этот узел сериализировал себя и следующий узел,и т.д.

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