2011-05-07 2 views
2

クラス内にいくつかのイベントがあります。 NetDataContractSerializerを使用してそれらをシリアル化する間、イベントはシリアル化されません。私はxmlがBinarySerializerのようなイベントをシリアライズできる方法はありますか?C#でイベントをxmlシリアル化する方法

答えて

3

いいえ、方法はありません。 XML形式では、BinarySerializerなどの型情報は保持されません。バイナリシリアライザで使用されるバイナリ形式とは異なり、XMLは相互運用可能な形式であり、イベントは.NET固有のアーティファクトであるため、トランスポートできません。

1

は、あなたの クラスの代表者やイベントをシリアル化すべきではない、通常のデリゲートとイベント盲目的

をシリアライズしないでください。これは です。シリアライズでは完全に オブジェクトグラフが再生され、デリゲート が本来の サブスクライバーをシリアライズして (呼び出しリスト)にシリアライズします。 あなたのすべての加入者が シリアライザブルであることを確かめることはできませんか?

だから、 代理人に[NonSerialized]を入力する必要があります。 (eventキーワードを持つ)イベントの

あなたは

[フィールド:NonSerialized]使用できる属性 は( "フィールド" をするSystem.Reflectionである)

Source

関連する問題