1. ホーム
  2. c#

C#でExceptionオブジェクトをシリアライズする方法は?

2023-11-08 16:28:41

質問

C#でExceptionオブジェクトをシリアライズしようとしています。しかし、Exceptionクラスは、以下のようにマークされていないので、それは不可能であるように見えます。 [Serializable] . これを回避する方法はあるのでしょうか?

アプリケーションの実行中に何か問題が発生した場合、発生した例外を通知してほしいのですが。

最初の反射神経はシリアライズすることです。

どのように解決するのですか?

私が以前行ったのは、カスタム Error クラスを作成することです。これはExceptionに関するすべての関連情報をカプセル化し、XMLシリアライズが可能です。

[Serializable]
public class Error
{
    public DateTime TimeStamp { get; set; }
    public string Message { get; set; }
    public string StackTrace { get; set; }

    public Error()
    {
        this.TimeStamp = DateTime.Now;
    }

    public Error(string Message) : this()
    {
        this.Message = Message;
    }

    public Error(System.Exception ex) : this(ex.Message)
    {
        this.StackTrace = ex.StackTrace;
    }

    public override string ToString()
    {
        return this.Message + this.StackTrace;
    }
}