Почему поля не сериализуются с помощью сериализатора XML в C#, а свойства — сериализуются? Я знаю, что свойства на самом деле являются методами, но я не понимаю, почему это должно иметь значение. Кто-нибудь знает ответ на это?
Огромное спасибо!
Почему поля не сериализуются с помощью сериализатора XML в C#, а свойства — сериализуются? Я знаю, что свойства на самом деле являются методами, но я не понимаю, почему это должно иметь значение. Кто-нибудь знает ответ на это?
Огромное спасибо!
Поля сериализуемы:
Сериализация XML сериализует общедоступные поля и свойства объекта или параметры и возвращаемые значения методов в поток XML, который соответствует определенному документу языка определения схемы XML (XSD). Сериализация XML приводит к строго типизированным классам с общедоступными свойствами и полями, которые преобразуются в XML. System.Xml.Serialization содержит классы, необходимые для сериализации и десериализации XML.
Из MSDN.
Поля сериализуемы. На самом деле все поля сериализованы по умолчанию, если вы не пометите их атрибутом NonSerialized
.
Если вы говорите о XML-сериализации, то будут сериализованы только общедоступные поля, потому что XML-сериализация сериализует только общедоступный интерфейс объекта.
XmlSerializer
илиDataContractJsonSerializer
илиprotobuf-net
или что-то еще? Ответ будет зависеть от тех, кто их реализовывает и проектирует, они хотят включать поля, свойства, индексаторы или что бы то ни было их предполагаемое использование. - person Chris Sinclair   schedule 11.07.2013