英語で読む

次の方法で共有


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;

イベントの種類

属性

注釈

例外状態オブジェクトは、 インターフェイスを 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