4

RestSharp クライアントで MVC4 WebApi を使用していますが、ObjectId を適切にシリアル化 (または逆シリアル化) するのに苦労しています。

私は次のような基本的なクラスを持っています:

public class User
{

    [BsonId]
    public ObjectId Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

}

クライアントでこのオブジェクトを逆シリアル化するための最良/適切な方法は何ですか? 私が試した Id プロパティの値はすべて ObjectId.Empty です。

アップデート

別の ObjectIdDeserializers を作成しようとしました。以下は、デシリアライザーと、クライアントに送り返されるクライアントとサンプル json の例です。

public class ObjectIdDeserializer : IDeserializer
{

    public string RootElement { get; set; }
    public string Namespace { get; set; }
    public string DateFormat { get; set; }

    public T Deserialize<T>(RestSharp.IRestResponse response)
    {
        return BsonSerializer.Deserialize<T>(response.Content);
    }

}

RestSharp では、上記のデシリアライザーを呼び出すために次の行を追加しました。

_client.AddHandler("application/json", new ObjectIdDeserializer());

サンプル json は次のようになります。

"User":
{
    "Id":
    {
    "_timestamp":1339158960,
    "_machine":7962014,
    "_pid":4040,
    "_increment":9499872
    },
    "FirstName":"Test",
    "LastName":"User"
}
4

1 に答える 1

3

SOで一連の検索を行った後、私がやろうとしていたことに対する簡単な解決策を見つけることができました.

この回答のアプローチを使用すると、プロパティは ObjectId として保存され、コードでは単なる文字列になります。まさに私が達成したいと思っていたこと。

https://stackoverflow.com/a/7982411/360843

于 2012-06-08T13:54:18.207 に答える