8

公式の MongoDB ドライバー (C#) を使用してカスタム IBsonSerializer を実装しています。Guid をシリアル化および逆シリアル化する必要がある状況にいます。

次のように Serialize メソッドを実装すると、機能します。

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: ライターの GuidRepresentation は CSharpLegacy であり、subType 引数を UuidStandard ではなく UuidLegacy にする必要があります。

標準表現を使用して Guid 値をシリアル化するにはどうすればよいですか?

4

3 に答える 3

18

古い質問ですが、誰かが私のようにグーグルで見つけた場合に備えて...

これを 1 回実行します。

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

   }
}
于 2014-04-24T16:58:06.533 に答える