通过忽略Data属性序列化序列化System.Exception类

本文关键字:序列化 System Exception 属性 Data | 更新日期: 2023-09-27 18:25:15

我正在尝试序列化.Net类库的System.Exception类,但是正如许多成员之前在这里讨论过的那样,该类的Data属性存在问题,因为它实现了IDictionary接口,这使得它不可序列化。

我试图在序列化过程中重写并标记此属性以忽略该问题,但没有成功,我仍然收到相同的错误。

public class CustomException : Exception
{
    [IgnoreDataMemberAttribute]
    public override IDictionary Data
    {
        get
        {
            return base.Data;
        }
    }
}

我还尝试使用IgnoreXML属性,结果相同,我使用的是XMLSerializer类。

通过忽略Data属性序列化序列化System.Exception类

将IDictionary序列化。请尝试这个:

[DataContract]
[Serializable]
public class CustomException : Exception
{
    IDictionary _iDictionary;
    [DataMember]
    public override IDictionary Data
    {
        get
        {
            if (_iDictionary == null)
            {
                _iDictionary = base.Data;
            }
            return _iDictionary;
        }
    }
}