Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
По умолчанию DataContractSerializer сериализует все общедоступные типы. Все публичные свойства и поля типа, доступные для чтения и записи, сериализуются.
Поведение по умолчанию можно изменить, применив DataContractAttribute и DataMemberAttribute атрибуты к типам и членам. Эта функция может быть полезна в ситуациях, когда у вас есть типы, которые не находятся под вашим контролем и не могут быть изменены для добавления атрибутов. DataContractSerializer распознает такие "немаркированные" типы.
Сериализация по умолчанию
Вы можете применить DataContractAttribute и DataMemberAttribute атрибуты для явного управления или настройки сериализации типов и членов. Кроме того, эти атрибуты можно применять к частным полям. Однако даже типы, которые не помечены этими атрибутами, сериализуются и десериализируются. Применяются следующие правила и исключения:
Из DataContractSerializer выводится контракт данных из типов без атрибутов, используя свойства по умолчанию вновь созданных типов.
Все публичные поля и свойства с публичными методами
getиsetсериализуются, если к этим членам не применяется атрибут IgnoreDataMemberAttribute.Семантика сериализации аналогична семантике XmlSerializer.
В немаркированных типах сериализуются только общедоступные типы с конструкторами, не имеющими параметров. Исключением из этого правила является использование ExtensionDataObject с интерфейсом IExtensibleDataObject.
Поля только для чтения, свойства без метода
get, а также свойства с внутренними или частными методамиsetилиsetне сериализуются. Такие свойства игнорируются, и исключение не возникает, кроме случаев, когда речь идёт о коллекциях только для чтения.XmlSerializer Атрибуты (например,
XmlElement,XmlAttribute,XmlIgnore,XmlIncludeи т. д.) игнорируются.Если вы не примените атрибут DataContractAttribute к заданному типу, сериализатор игнорирует любой член этого типа, к которому применён атрибут DataMemberAttribute.
Свойство KnownTypes поддерживается в типах, не помеченных атрибутом DataContractAttribute . Это включает поддержку атрибута KnownTypeAttribute для немаркированных типов.
Чтобы "отказаться" от процесса сериализации для открытых членов, свойств или полей, примените атрибут IgnoreDataMemberAttribute к этим элементам.
Наследство
Немаркированные типы (типы без DataContractAttribute атрибута) могут наследоваться от типов, имеющих этот атрибут. Однако обратный параметр не допускается: типы с атрибутом не могут наследоваться от немаркированных типов. Это правило применяется в первую очередь для обеспечения обратной совместимости с кодом, написанным в более ранних версиях .NET Framework.