2009-06-18 4 views
4

Я хочу сделать POCO [Serializable], но не любые другие члены класса в его дереве иерархии классов. Я знаю, что есть [NonSerialized], который работает только для полей, но есть ли способ исключить их или выбрать определенных членов, используя [Serializable] в POCO?Сериализация POCO Исключая членов класса

ответ

4

Вы должны посмотреть на DataContractSerializer; он использует подход «opt-in» для сериализации.

Также было бы полезно прочитать XmlSerializer vs DataContractSerializer: Serialization in Wcf для сравнения и сравнения между DataContractSerializer и XmlSerializer.

XmlSerializer был в .Net , начиная с версии 1.0, и служил нам хорошо для всего от Remoting, Web Services , сериализации в файл и т.д. Однако в .NET 3.0 DataContractSerializer пришел , И неожиданно большое руководство предлагает использовать его поверх старого проверенного XmlSerializer. Wcf даже использует это как механизм по умолчанию для . Вопрос : «Это действительно лучше?». Приговор - да, и нет. Как и большинство вещей, это зависит от вашей реализации и что вам нужно. Для Wcf вы должны использовать DataContractSerializer. Если вам нужен полный контроль над тем, как выглядит xml , вы должны вернуться к XmlSerializer.

+0

Хороший ответ (я удалил мой) - просто добавить (для OP): если вы хотите жесткую двоичную сериализацию, вы можете рассмотреть protobuf-net. –

+0

@Marc - protobuf-net - тоже хороший выбор, и он стоит собственного ответа. Если вы отмените свой ответ, я продолжу его. –

Смежные вопросы