protobuf-net exception:没有为类型定义的序列化程序:System.Xml.XmlDocument

时间:2011-07-01 08:12:52

标签: c# protobuf-net

如何序列化包含XmlDocument类型属性的对象?:

[ProtoContract]
public class Foo
{
    [ProtoMember(1)] 
    public XmlDocument Bar { get; set; }
}

1 个答案:

答案 0 :(得分:4)

作为一个字符串;例如:

[ProtoContract]
public class Foo
{
    public XmlDocument Bar { get; set; }
    [ProtoMember(1)]
    private string BarSerialized {
        get { return Bar == null ? null : Bar.OuterXml; }
        set {
            if (value == null) { Bar = null; }
            else {
                var tmp = new XmlDocument();
                tmp.LoadXml(value);
                Bar = tmp;
            }
        }
    }
}

我想这个可以自动处理,但是...在protobuf中包装xml似乎已经闻到了一点冗余/内部平台效应。我这样,我不确定这是否是我想通过添加直接库支持鼓励; p

如果你的模型中有批次的xml文档,那么 - 好吧,首先 protobuf可能不会给你带来太大的好处,但其次:它是可能有可能在v2中勾选XmlDocument的“代理人”;这可能会为每个文档增加2个字节的开销,但是如果你有xml可能不是你最大的问题。