3

次のクラスがあるとします。

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 を Entity に置き換えると、問題なく動作します。カスタム JsonConverter を作成する必要がありますか? 私はこれを試みましたが、何らかの理由で、CanConvert と WriteJson は (正常に) 呼び出されましたが、ReadJson は呼び出されませんでした。

4

0 に答える 0