Exception.SerializeObjectState Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Внимание
BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.
Происходит при сериализации исключения для создания объекта состояния исключения, содержащего сериализованные данные об исключении.
protected:
event EventHandler<System::Runtime::Serialization::SafeSerializationEventArgs ^> ^ SerializeObjectState;
[System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected event EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs>? SerializeObjectState;
protected event EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs>? SerializeObjectState;
protected event EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs> SerializeObjectState;
[<System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
member this.SerializeObjectState : EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs>
member this.SerializeObjectState : EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs>
Protected Custom Event SerializeObjectState As EventHandler(Of SafeSerializationEventArgs)
Тип события
- Атрибуты
Комментарии
Объект состояния исключения реализует ISafeSerializationData интерфейс.
SerializeObjectState При подписке на событие исключение десериализируется и создается как пустое исключение. Конструктор исключения не выполняется, и состояние исключения также десериализировано. Затем CompleteDeserialization метод обратного вызова объекта состояния исключения уведомляется, чтобы он смог отправить десериализированные данные в пустое исключение.
Это SerializeObjectState событие позволяет прозрачным типам исключений сериализовать и десериализировать данные исключений. Прозрачный код может выполнять команды в пределах набора разрешений, в котором он работает, но не может выполнять, вызывать, наследовать или содержать критически важный код.
SerializeObjectState Если событие не подписано, десериализация происходит как обычно с помощью конструктораException.
Как правило, обработчик SerializeObjectState события добавляется в конструктор исключения для обеспечения его сериализации. Но поскольку конструктор не выполняется при SerializeObjectState выполнении обработчика событий, сериализация десериализированного исключения может вызвать SerializationException исключение при попытке десериализации исключения. Чтобы избежать этого, необходимо также добавить обработчик события SerializeObjectState в ISafeSerializationData.CompleteDeserialization метод. См. раздел "Примеры" для иллюстрации.
Примечания для тех, кто наследует этот метод
Если это событие подписано на и используется, все производные типы, следовать в иерархии наследования, должны реализовать один и тот же механизм сериализации.