我正在将 MVC4 WebApi 与 RestSharp 客户端一起使用,我正在努力让 ObjectIds 正确序列化(或反序列化)。
我有一个像这样的基础课:
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"
}