public OXmlOpenHeaderElement _Deserialize(BsonReader bsonReader, IBsonSerializationOptions options) { OXmlOpenHeaderElement element = new OXmlOpenHeaderElement(); 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(); //"openfooter" if (type.ToLower() != "openheader") { throw new PBException($"invalid Type {type} when deserialize OXmlOpenHeader"); } break; case "headertype": if (bsonType == BsonType.Null) { break; } if (bsonType != BsonType.String) { throw new PBException($"wrong HeaderType value {bsonType}"); } element.HeaderType = bsonReader.ReadString().zParseEnum <HeaderFooterValues>(); break; default: //OpenHeaderFooter throw new PBException($"unknow OpenHeader value \"{name}\""); } } return(element); }
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (value == null) { throw new PBException("serialize OXmlOpenHeader value is null"); } if (_trace) { pb.Trace.WriteLine("OXmlOpenHeaderElementSerializer.Serialize()"); } OXmlOpenHeaderElement element = (OXmlOpenHeaderElement)value; bsonWriter.WriteStartDocument(); bsonWriter.WriteString("Type", "OpenHeader"); bsonWriter.WriteString("HeaderType", element.HeaderType.ToString()); bsonWriter.WriteEndDocument(); }