C# 4.0 使用Json.Net反序列化GUI以扩展对象会丢失类型,并且是字符串

C# 4.0 使用Json.Net反序列化GUI以扩展对象会丢失类型,并且是字符串,c#-4.0,serialization,guid,json.net,expandoobject,C# 4.0,Serialization,Guid,Json.net,Expandoobject,鉴于以下类别: public class Entity { public Guid UniqueId { get; set; } } 以下测试失败: [Test] public void GuidTest() { var entity = new Entity { UniqueId = Guid.NewGuid() }; var entityJson = JsonConvert.Se

鉴于以下类别:

public class Entity
{
    public Guid UniqueId
    {
        get;
        set;
    }
}
以下测试失败:

    [Test]
    public void GuidTest()
    {
        var entity = new Entity { UniqueId = Guid.NewGuid() };
        var entityJson = JsonConvert.SerializeObject(entity);
        dynamic reconstitutedEntity = JsonConvert.DeserializeObject<ExpandoObject>(entityJson);
        Assert.That(reconstitutedEntity.UniqueId, Is.EqualTo(entity.UniqueId));
    }
[测试]
公共void GuidTest()
{
var entity=新实体{UniqueId=Guid.NewGuid()};
var entityJson=JsonConvert.SerializeObject(实体);
dynamic restructuredentity=JsonConvert.DeserializeObject(entityJson);
断言(restructuredentity.UniqueId,Is.EqualTo(entity.UniqueId));
}
错误如下:

预计:35ac3081-07cb-41dd-bf40-22e2ff47863c 但是是:“35ac3081-07cb-41dd-bf40-22e2ff47863c”

这是Json.Net中的错误还是预期的行为?如何使用ExpandoObject通过测试


如果我用实体替换ExpandoObject,它就可以正常工作。我是否必须编写自定义JsonConverter?我尝试过这样做,但出于某种原因,尽管CanConvert和WriteJson(成功)调用,但ReadJson从未被调用。

您解决了这个问题吗?我也有同样的问题。我不记得了,因为那是将近8年前的事了。哈话虽如此,可能不是因为我可能会回来回答我自己的问题。