LiteDB v5.0.9 中的自定义序列化器和反序列化器

问题描述

LiteDB 5.0.9 的发行说明说:“即使是基本的 BSON 类型,现在也可以使用自定义序列化器和反序列化器。如果您不想在存储 DateTime 时失去精度,这将非常有用。”但是似乎没有任何文档描述如何执行此操作。有人可以指出我或提供一个例子吗?

谢谢

解决方法

DateTime 精度似乎是 common issue with LiteDBIssue 1765 provides the following solution

var mapper = new BsonMapper();
mapper.RegisterType<DateTime>(
    value => value.ToString("o",CultureInfo.InvariantCulture),bson => DateTime.ParseExact(bson,"o",CultureInfo.InvariantCulture,DateTimeStyles.RoundtripKind));
mapper.RegisterType<DateTimeOffset>(
    value => value.ToString("o",bson => DateTimeOffset.ParseExact(bson,DateTimeStyles.RoundtripKind));

using (var db = new LiteDatabase("instance.db",mapper))
{
    ...
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...