C# 在反序列化期间进行服务调用是一个好主意吗?
在forC# 在反序列化期间进行服务调用是一个好主意吗?,c#,json,design-patterns,serialization,json.net,C#,Json,Design Patterns,Serialization,Json.net,在forCustomCreationConverter中,它显示: “更复杂的场景可能涉及在运行时解析对象的对象工厂或服务定位器。” 我正在处理这样一个场景,在这个场景中,我必须使用传入的DTO(JSON格式)对持久性对象进行水合。要使持久对象水合,我必须首先使用服务调用加载它。我可以在反序列化期间使用CustomCreationConverter进行此调用。或者,我可以将JSON作为ExpandoObject使用,并传递地分配所有成员。复杂度不如对象图小 关于在反序列化过程中进行服务调用的某些
CustomCreationConverter
中,它显示:
“更复杂的场景可能涉及在运行时解析对象的对象工厂或服务定位器。”
我正在处理这样一个场景,在这个场景中,我必须使用传入的DTO(JSON格式)对持久性对象进行水合。要使持久对象水合,我必须首先使用服务调用加载它。我可以在反序列化期间使用CustomCreationConverter
进行此调用。或者,我可以将JSON作为ExpandoObject
使用,并传递地分配所有成员。复杂度不如对象图小
关于在反序列化过程中进行服务调用的某些内容似乎不正确。这使得测试更加复杂,因为我必须首先将该对象加载到内存中才能对其进行反序列化。这也要求紧密耦合
因此,我的问题是:在这种情况下,在反序列化期间进行服务调用是一个好主意吗?据我所知,您正在执行以下步骤:
PopulateObject
方法,如下所示:
var obj = RemoteService.Retrieve(id);
Newtonsoft.Json.JsonConvert.PopulateObject(jsonString, obj);
通过这种方式,您可以使代码保持简单(尽管不那么有趣)和可测试性