我正在使用官方的mongodb驱动程序(c)实现一个自定义的ibsonserializer。在这种情况下,我必须序列化和反序列化一个guid。
如果我按如下方式实现序列化方法,它会工作:
public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options)
{
BsonBinaryData data = new BsonBinaryData(value, GuidRepresentation.CSharpLegacy);
bsonWriter.WriteBinaryData(data);
}
但是,我不希望guid表示是CSharpLegacy,我希望使用标准表示。但是,如果更改该代码中的guid表示,则会得到以下错误:
mongodb.bson.bsonserializationException:编写器的guidRespresentation是csharpLegacy,它要求子类型参数为UuidleGacy,而不是UuidStandard。
如何使用标准表示法序列化guid值?
最佳答案
老问题,但如果有人像我一样在谷歌上找到它…
执行此操作一次:
BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;
例如,在Web应用程序/Web API中,global.asax.cs文件是添加一次的最佳位置。
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;
//Other code...below
}
}