我为 mongoDB 创建了一个自定义序列化器。
我可以注册它并且它按预期工作。
然而,我的应用程序有时会抛出错误,因为它尝试注册序列化器两次。
如何检测序列化器是否已注册,从而阻止我的应用程序再次注册?
如果您正在使用
BsonSerializer.RegisterSerializer(typeof (Type), typeSerializer);
您可能会收到此错误“已经有一个为类型注册的序列化程序”。因为同一种类型的序列化器不能注册2次。但是您可以编写自己的序列化器,并且该序列化器将在默认序列化器之前工作。
例如:如果你想使用本地DateTime
而不是默认的 Utc。
您需要做的就是编写一个类来实现IBsonSerializationProvider
并将该提供商注册到BsonSerializer
尽快地!
这是示例代码。
public class LocalDateTimeSerializationProvider : IBsonSerializationProvider
{
public IBsonSerializer GetSerializer(Type type)
{
return type == typeof(DateTime) ? DateTimeSerializer.LocalInstance : null;
}
}
并能够注册
BsonSerializer.RegisterSerializationProvider(new LocalDateTimeSerializationProvider());
我希望这会有所帮助,您也可以阅读原始文档here http://mongodb.github.io/mongo-csharp-driver/2.4/reference/bson/serialization/#serializer-registry这个mongodb的.net驱动版本是2.4!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)