public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (value == null) { throw new PBException("serialize OXmlOpenFooter value is null"); } if (_trace) { pb.Trace.WriteLine("OXmlOpenFooterElementSerializer.Serialize()"); } OXmlOpenFooterElement element = (OXmlOpenFooterElement)value; bsonWriter.WriteStartDocument(); bsonWriter.WriteString("Type", "OpenFooter"); bsonWriter.WriteString("FooterType", element.FooterType.ToString()); bsonWriter.WriteEndDocument(); }
public OXmlOpenFooterElement _Deserialize(BsonReader bsonReader, IBsonSerializationOptions options) { OXmlOpenFooterElement element = new OXmlOpenFooterElement(); while (true) { BsonType bsonType = bsonReader.ReadBsonType(); if (bsonType == BsonType.EndOfDocument) { break; } string name = bsonReader.ReadName(); switch (name.ToLower()) { case "type": if (bsonType != BsonType.String) { throw new PBException($"wrong type value {bsonType}"); } string type = bsonReader.ReadString(); if (type.ToLower() != "openfooter") { throw new PBException($"invalid Type {type} when deserialize OXmlOpenFooter"); } break; case "footertype": if (bsonType == BsonType.Null) { break; } if (bsonType != BsonType.String) { throw new PBException($"wrong FooterType value {bsonType}"); } element.FooterType = bsonReader.ReadString().zParseEnum <HeaderFooterValues>(); break; default: throw new PBException($"unknow OpenFooter value \"{name}\""); } } return(element); }