Настройка сериализации с использованием атрибутов

Для дополнительного управления сериализацией.NET предоставляет возможность определять методы, оснащаемые специальными атрибутами:

[OnSerializing] Метод будет вызван при сериализации объекта
[OnSerialized] Метод будет вызван после сериализации объекта
[OnDeserializing] Метод будет вызван при десериализации объекта
[OnDeserialized] Метод будет вызван после десериализации объекта

Эти атрибуты сериализации определены в пространстве имен System.Runtime.Serialization. В случае применения этих атрибутов метод должен быть определен так, чтобы принимать параметр StreamingContext и не возвращать ничего.

Пример:

[Serializable]

public class UserPrefs

{

public string WindowColor;

public int FontSize;

[OnSerializing]

private void OnSerializing(StreamingContext context)

{

// будет вызван при сериализации

}

[OnSerialized]

private void OnSerialized(StreamingContext context)

{

// Будет вызван сразу после сериализации

}

}

Выводы:

· Сериализация – сохранение объектов в потоке для последующего полного восстановления его состояния.

· При сериализации класса сохраняются также все объекты, от которых он зависит (наследуя или включая). Для установления связей среда строит граф объектов.

· Для сериализации объект должен быть отмечен атрибутом [Serializable]. Если какие-либо поля не должны сохраняться – их нужно отметить атрибутом [NonSerialized].

· BinaryFormatter и SoapFormatter сериализуют все поля и свойства, XmlSerializer – только public поля или private поля с public свойствами.

· BinaryFormatter сохраняет данные в компактном двоичном формате, SoapFormatter – в формате SOAP для веб-служб, XmlSerializer – в XML-формате.

· Для тонкого управления сериализацией можно использовать методы, помеченные специальными атрибутами [OnSerializing], [OnSerialized], [OnDeserializing], [OnDeserialized]


Понятие БД и СУБД. Язык SQL. ADO.NET как средство доступа из C# к СУБД.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: