次のクラスがあるとします。
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 は呼び出されませんでした。