Для дополнительного управления сериализацией.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# к СУБД.