在CustomCreationConverter
CustomCreationConverter
中,它说:
"更复杂的场景可能涉及在运行时解析对象的对象工厂或服务定位器。"
我正在处理这样一个场景,我必须使用传入的DTO(使用JSON)来保存持久对象。为了保持持久对象,我必须首先使用服务调用加载它。我可以使用ExpandoObject
在反序列化期间进行此调用。或者我可以将JSON作为{{1}}使用,并传递给所有成员。对象图很小,复杂性不大。
在反序列化期间进行服务调用的事情似乎并不正确。它使测试变得更加复杂,因为我必须首先将该对象加载到内存中才能对其进行反序列化。这也引起了紧密的联系。
所以我的问题是:在此方案中反序列化期间进行服务调用是否是一个好主意?
答案 0 :(得分:1)
据我了解,您正在执行以下步骤:
嗯,在我看来,你可以使用PopulateObject
方法,如下所示:
var obj = RemoteService.Retrieve(id);
Newtonsoft.Json.JsonConvert.PopulateObject(jsonString, obj);
通过这种方式,您可以保持代码简单(尽管不那么有趣)并且可以测试。