在newtonsoft docs for CustomCreationConverter
中,它说:
"一个更复杂的场景可能涉及在运行时解决对象的对象工厂或服务定位器。"
我正在处理这样一种情况,在这种情况下,我必须用传入的DTO(在JSON中)进行持续的对象。要补充持久对象,我必须首先使用服务调用加载它。我可以使用CustomCreationConverter
在避难所进行此通话。或者我可以将JSON作为ExpandoObject
食用,然后分配所有成员。复杂性并不多,因为对象图很小。
关于在求职过程中拨打服务电话的某些东西似乎不正确。它使测试变得更加复杂,因为我必须首先将该对象加载到内存中才能对其进行估算化。这也尖叫着紧密的耦合。
所以我的问题是:在这种情况下在避难所中拨打服务是个好主意?
据我了解,您正在执行此步骤:
- 致电避免化
- 在定制converter中,您可以通过远程服务检索预先填充的对象实例
- json.net在检索的实例上做到了。
好吧,在我看来,您可以使用PopulateObject
方法,例如:
var obj = RemoteService.Retrieve(id);
Newtonsoft.Json.JsonConvert.PopulateObject(jsonString, obj);
这样,您可以简单地保持代码(尽管乐趣少)和可测试。