исключение protobuf-net: не определен сериализатор для типа: System.Xml.XmlDocument - PullRequest
2 голосов
/ 01 июля 2011

Как сериализовать объект, который содержит свойство типа XmlDocument?:

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

1 Ответ

4 голосов
/ 01 июля 2011

в виде строки;например:

[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;
            }
        }
    }
}

Полагаю, что можно * обработать автоматически, но ... упаковка xml внутри protobuf уже, кажется, пахнет чем-то вроде избыточности / эффекта внутренней платформы.I Как таковой, я не уверен, что это то, что я хочу поощрить , добавив прямую поддержку библиотеки; p

Если у вас есть лотов из xml-документовтогда в вашей модели - ну, во-первых, , во-первых, protobuf, вероятно, не принесет вам большой пользы, но, во-вторых: возможно, можно зацепить "заменитель" для XmlDocument в v2;это, вероятно, добавит 2 байта на документ, но если у вас есть xml, это, вероятно, не самая большая проблема.

...