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

时间:2015-12-01 11:48:03

标签: c# .net exception serialization

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

我试图覆盖并标记在序列化期间忽略此属性以解决问题,但是没有成功,我仍然收到相同的错误。

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

我也尝试使用具有相同结果的IgnoreXML属性,我正在使用XMLSerializer类。

1 个答案:

答案 0 :(得分:0)

Serilalize IDictionary。请试试这个:

[DataContract]
[Serializable]
public class CustomException : Exception
{

    IDictionary _iDictionary;

    [DataMember]
    public override IDictionary Data
    {
        get
        {
            if (_iDictionary == null)
            {
                _iDictionary = base.Data;
            }
            return _iDictionary;
        }
    }
}