public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (value == null) { throw new PBException("serialize OXmlBreakElement value is null"); } if (_trace) { pb.Trace.WriteLine("OXmlBreakElementSerializer.Serialize()"); } OXmlBreakElement element = (OXmlBreakElement)value; bsonWriter.WriteStartDocument(); bsonWriter.WriteString("Type", "Break"); bsonWriter.WriteString("BreakType", element.BreakType.ToString()); bsonWriter.WriteEndDocument(); }
public OXmlBreakElement _Deserialize(BsonReader bsonReader, IBsonSerializationOptions options) { OXmlBreakElement element = new OXmlBreakElement(); 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() != "break") { throw new PBException($"invalid Type {type} when deserialize OXmlBreakElement"); } break; case "breaktype": if (bsonType == BsonType.Null) { break; } if (bsonType != BsonType.String) { throw new PBException($"wrong BreakType value {bsonType}"); } element.BreakType = bsonReader.ReadString().zParseEnum <BreakValues>(ignoreCase: true); break; default: throw new PBException($"unknow Break value \"{name}\""); } } return(element); }