4

我正在将 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"
}
4

1 回答 1

3

在对 SO 进行了大量搜索之后,我能够找到一个简单的解决方案来解决我想要做的事情。

使用此答案中的方法,该属性被存储为 ObjectId 并且在代码中它只是一个字符串。正是我希望达到的目标。

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

于 2012-06-08T13:54:18.207 回答