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