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;
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;
member this.SerializeObjectState : EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs> 
[<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> 
Protected Custom Event SerializeObjectState As EventHandler(Of SafeSerializationEventArgs) 

Тип события

Атрибуты

Комментарии

Объект состояния исключения реализует ISafeSerializationData интерфейс .

При подписке на SerializeObjectState событие исключение десериализуется и создается как пустое исключение. Конструктор исключения не выполняется, и состояние исключения также десериализуется. Затем CompleteDeserialization метод обратного вызова объекта состояния исключения получает уведомление, чтобы он смог отправить десериализованные данные в пустое исключение.

Событие SerializeObjectState позволяет прозрачным типам исключений сериализовать и десериализовать данные исключений. Прозрачный код может выполнять команды в пределах набора разрешений, в котором он работает, но не может выполнять, вызывать, наследовать от или содержать критически важный код.

SerializeObjectState Если событие не подписано, десериализация выполняется обычным образом с помощью конструктораException.

Как правило, обработчик события SerializeObjectState добавляется в конструктор исключения для обеспечения его сериализации. Но так как конструктор не выполняется при SerializeObjectState выполнении обработчика событий, сериализация десериализованного исключения может вызвать SerializationException исключение при попытке десериализовать исключение. Чтобы избежать этого, следует также добавить обработчик для SerializeObjectState события в ISafeSerializationData.CompleteDeserialization метод . Иллюстрацию см. в разделе Примеры.

Примечания для тех, кто наследует этот метод

Если это событие подписывается и используется, все производные типы, следующие в иерархии наследования, должны реализовывать один и тот же механизм сериализации.

Применяется к