2012-04-19 12 views
3

Protobuf-Netを使用してbulit-inシステムクラスをシリアライズ/デシリアライズする方法を教えてください。具体的には、基本のExceptionクラスとそれを継承する他のすべての例外クラスを直列化/逆シリアル化しようとしています。私はシリアル化する必要がある可能性のあるすべての例外クラスを指定する新しいRunTypeModelを作成する必要がありますか、何とかProtobuf-Netにすべての同じ方法でシリアル化するよう指示しますか?私がProtobuf-Netにまったく新しいものなので、どんな助けも非常に高く評価されています。私はまだそれをすべて理解しようとしています。 ありがとう:)Protobuf-Netを使用して.Net例外をシリアル化する方法は?

答えて

3

protobuf-netはDTOモデルをシリアライズするように設計されていますが、XmlSerializerなどと非常によく似ています(xmlではなく、明らかに)。シリアライズ例外は現在組み込まれていません。いくつかのことをハックする可能性がありますが、これは実際に設計された機能ではありません。

+0

これについてのお返事ありがとうございます。あなたは私に壁の時間から頭を救った:) – WiredWiz

+0

私は最終的に例外からデータを抽出し、それをシリアル化するために少し醜い反射を使用するExceptionProxyクラスを作成することによってこの問題を解決した。次に、逆シリアル化されたExceptionProxyクラス情報とより多くのリフレクションを使用して、反対側の例外グラフを再水和します。それはかなりではありませんが、かなりうまくいきます。 – WiredWiz

0

あなたは本当に

public class MyTest 
{ 
    [ProtoMember(1)] 
    public Exception MyException { get; set; } 
} 

のようなクラスをシリアル化can'tしかし、小さな変更を行うことは

public class MyTest 
{ 
    [ProtoMember(1, DynamicType = true)] 
    public Object MyException { get; set; } 
} 

をシリアル化することが可能となりますこれは私が例外をシリアル化するために見つけた唯一の方法でした。

+0

これは私にとってはうまくいきませんでした。これはうまくいきました:http://stackoverflow.com/questions/94488/what-is-the-correct-way-to-make-a-custom-net-exception-serializable – Contango

関連する問題