2013-05-25 117 views
1

在一个或多个字段我想序列,从Exception派生与XmlSerializerBinaryFormatter类。我的问题是,我想在序列化时忽略异常类的一些字段。忽略序列

我知道,我通常能使用属性做到这一点,但我没有对异常类的源代码,所以我不能添加属性。有什么办法可以告诉序列化程序不要序列化一些异常类的字段吗?

请注意,我需要为二进制和XML序列化的解决方案。

回答

0

怎么样连载一类,如:

public class ExceptionSerializer { 
    private readonly Exception _Ex; 

    public serializableException(Exception e) { 
     _Ex = e; 
    } 

    [Flag_you_want_here] 
    public SerializableMessage { get{ _Ex.Message;} } 

} 

莫非是一个想法?

+0

是的,这将是可能的,但是是不是有另一个机会做到这一点?喜欢的东西: Serializer.AddAttributeRule( “消息”,XmlAttributeType.Ignore)? 因为我想用其他类的解决方案也和它会更容易然后封装我想要序列的所有领域。 – Reignbeaux

1

我认为你正在寻找的答案被XmlAttributes.XmlIgnore形成,至少对XML序列化。我只是用它,它工作正常。这里是一块,我用它来建立一个串行我User类别代码的忽略UserName属性:

private static XmlSerializer UserSerializer() 
{ 
    XmlAttributeOverrides xOver = new XmlAttributeOverrides(); 

    XmlAttributes attrs = new XmlAttributes(); 
    attrs.XmlIgnore = true; 
    xOver.Add(typeof(User), "UserName", attrs); 

    return new XmlSerializer(typeof(User), xOver); 
}