Beispiel #1
0
    static BsonValue ConvertToDate(BsonValue value, ConversionBSONType conversion)
    {
        if (value is BsonDateTime dateTimeValue)
        {
            return(ConvertDateTo(new DateTimeOffset(dateTimeValue.ToUniversalTime(), TimeSpan.Zero), conversion));
        }

        if (value is BsonString stringValue)
        {
            return(ConvertDateTo(DateTimeOffset.Parse(stringValue.Value, CultureInfo.InvariantCulture), conversion));
        }

        throw new CannotConvertValueUsingConversion(value, conversion);
    }
Beispiel #2
0
    /// <inheritdoc />
    public BsonValue Convert(BsonValue value, ConversionBSONType conversion)
    {
        switch (conversion)
        {
        case ConversionBSONType.None:
            return(value);

        case ConversionBSONType.DateAsDate:
        case ConversionBSONType.DateAsArray:
        case ConversionBSONType.DateAsDocument:
        case ConversionBSONType.DateAsString:
        case ConversionBSONType.DateAsInt64:
            return(ConvertToDate(value, conversion));

        case ConversionBSONType.GuidAsStandardBinary:
        case ConversionBSONType.GuidAsCsharpLegacyBinary:
        case ConversionBSONType.GuidAsString:
            return(ConvertToGuid(value, conversion));

        default:
            throw new UnknownBSONConversionType(conversion);
        }
    }
Beispiel #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UnknownBSONConversionType"/> class.
 /// </summary>
 /// <param name="conversion">The unknown conversion type.</param>
 public UnknownBSONConversionType(ConversionBSONType conversion)
     : base($"Cannot convert value using the BSON conversion {conversion}")
 {
 }
Beispiel #4
0
 static BsonValue ConvertDateTo(DateTimeOffset value, ConversionBSONType conversion)
 => conversion switch
 {
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CannotConvertValueUsingConversion"/> class.
 /// </summary>
 /// <param name="value">The value to be converted.</param>
 /// <param name="conversion">The conversion to be applied.</param>
 public CannotConvertValueUsingConversion(BsonValue value, ConversionBSONType conversion)
     : base($"Cannot convert value '{value}' of type {value.BsonType} using conversion {conversion}")
 {
 }