2013-05-25 2 views
1

Exception에서 파생되는 클래스를 XmlSerializerBinaryFormatter으로 직렬화하려고합니다. 내 문제는 내가 직렬화하는 동안 예외 클래스의 일부 필드를 무시하려면.직렬화 중에 하나 이상의 필드를 무시합니다.

나는 일반적으로 속성을 사용하여이 작업을 수행 할 수 있음을 알고 있지만 예외 클래스의 원본이 없으므로 특성을 추가 할 수 없습니다. 예외 클래스의 일부 필드를 serialize하지 않도록 serializer에 알리는 방법이 있습니까?

이진 및 XML 직렬화에 대한 솔루션이 필요합니다.

답변

0

어떻게 같은 클래스를 serialising에 대한 : 그 아이디어가 될 수

public class ExceptionSerializer { 
    private readonly Exception _Ex; 

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

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

} 

?

+0

예, 즉 가능할 것이다, 그러나이 작업을 수행하는 또 다른 기회가되지 않습니다 : 여기에 UserName 속성을 무시 내 User 클래스의 시리얼을 구축하는 데 사용할 코드 조각은? 같은 것 : Serializer.AddAttributeRule ("Message", XmlAttributeType.Ignore)? 다른 클래스에도 솔루션을 사용하고 싶기 때문에 직렬화하려는 모든 필드를 캡슐화하는 것이 훨씬 쉽습니다. – Reignbeaux

1

나는 당신이 찾고있는 대답이 XmlAttributes.XmlIgnore에 의해 제공된다고 생각한다. 최소한 XML 직렬화를 위해서는. 방금 사용했는데 괜찮 았어.

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); 
} 
관련 문제