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"
}