我有一个具有类型属性(假设它被称为X)的模型DateTime?。
我想设置,[BsonDateTimeOptions(DateOnly = true)]但在 mongo c# 驱动程序中使用类映射器,如:
BsonClassMap.RegisterClassMap<MyModel>(cm =>
{
cm.AutoMap();
cm.MapMember(c => c.X).SetSerializer(new DateTimeSerializer(dateOnly: true));
});
但由于某种原因,我收到一个错误,因为该属性是Nullable,对于普通DateTime类型,它可以正常工作。
为什么我需要这个,因为我X只需要在没有时区的情况下将值保存为日期。
我已经尝试构建自定义序列化程序,但是在反序列化时出现错误:
ReadBsonType 只能在 State 为 Type 时调用,不能在 State 为 Value 时调用
这是自定义序列化程序:
public class DateTimeNullableSerialzier : DateTimeSerializer, IBsonSerializer
{
public object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
if (context.Reader.CurrentBsonType == BsonType.Null)
return null;
return base.Deserialize(context, args);
}
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
{
if (value is null)
context.Writer.WriteNull();
else
base.Serialize(context, args, (DateTime)value);
}
}
暮色呼如
白衣非少年
相关分类