给定以下课程:
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));
}
出现错误:
预期:35ac3081-07cb-41dd-bf40-22e2ff47863c 但是是:“35ac3081-07cb-41dd-bf40-22e2ff47863c”
这是 Json.Net 中的错误还是预期的行为?如何使用 ExpandoObject 让测试通过?
如果我用实体替换 ExpandoObject,它工作得很好。我必须编写自定义 JsonConverter 吗?我尝试了这个,但由于某种原因,尽管 CanConvert 和 WriteJson (成功),但从未调用过 ReadJson。