我正在使用官方的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

   }
}

08-07 22:17