public override void Serialize(
BsonWriter bsonWriter,
Type nominalType,
object value,
IBsonSerializationOptions options)
{
if (value == null)
{
bsonWriter.WriteNull();
}
else
{
var version = (Version)value;
var representationSerializationOptions = EnsureSerializationOptions<RepresentationSerializationOptions>(options);
switch (representationSerializationOptions.Representation)
{
case BsonType.Document:
bsonWriter.WriteStartDocument();
bsonWriter.WriteInt32("Major", version.Major);
bsonWriter.WriteInt32("Minor", version.Minor);
if (version.Build != -1)
{
bsonWriter.WriteInt32("Build", version.Build);
if (version.Revision != -1)
{
bsonWriter.WriteInt32("Revision", version.Revision);
}
}
bsonWriter.WriteEndDocument();
break;
case BsonType.String:
bsonWriter.WriteString(version.ToString());
break;
default:
var message = string.Format("'{0}' is not a valid Version representation.", representationSerializationOptions.Representation);
throw new BsonSerializationException(message);
}
}
}
}