Exception.SerializeObjectState 事件

定义

注意

BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.

当异常被序列化用来创建包含有关该异常的徐列出数据的异常状态对象时会出现该问题。

C#
protected event EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs>? SerializeObjectState;
C#
[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;
C#
protected event EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs> SerializeObjectState;

事件类型

属性

注解

异常状态对象实现 ISafeSerializationData 接口。

SerializeObjectState订阅事件后,异常将反序列化并创建为空异常。 异常的构造函数未运行,异常状态也会反序列化。 CompleteDeserialization然后通知异常状态对象的回调方法,以便它可以将反序列化的数据推送到空异常中。

事件 SerializeObjectState 使透明异常类型能够序列化和反序列化异常数据。 透明代码可以在其操作的权限集边界内执行命令,但不能执行、调用、派生自或包含关键代码。

SerializeObjectState如果未订阅事件,则使用 构造函数像往常一Exception样进行反序列化。

通常,事件的处理程序 SerializeObjectState 会添加到异常的构造函数中,以提供其序列化。 但是,由于执行事件处理程序时 SerializeObjectState 不会执行构造函数,因此在尝试反序列化异常时,序列化反序列化的异常可能会引发 SerializationException 异常。 若要避免这种情况,还应在 方法中添加 ISafeSerializationData.CompleteDeserialization 事件的处理程序SerializeObjectState。 有关插图,请参阅示例部分。

继承者说明

如果订阅并使用此事件,则继承层次结构中遵循的所有派生类型都必须实现相同的序列化机制。

适用于

产品 版本 (已过时)
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5 (6, 7, 8, 9)
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1