与JSON.NET deserialize to object with Type parameter类似,我需要反序列化一些先前已经序列化的JSON:
序列化代码:
...
Data = new ImplementationofICommandData{ Id = Id }
DataType = typeof(ImplementationofICommandData).AssemblyQualifiedName,
...
反序列化代码:
...
(ICommandData)JsonConvert.DeserializeObject(dto.Data, Type.GetType(dto.DataType))
...
在这种情况下,dto.DataType包含AssemblyFullName。
最初,包含序列化和反序列化的项目共享一个带有DTO的项目,因此反序列化能够为该类型使用相同的AssemblyQualifiedName。
现在,我有一个将数据序列化到数据库的新项目。我在原始共享项目中有一个DTO,它与新项目中的DTO具有完全相同的结构,但由于处于不同的程序集中,序列化的AssemblyQualified名称与反序列化代码知道的类型不对应
理想情况下,我不必使序列化和反序列化代码共享相同的DTO项目,因此是否可以通过少于AssemblyQualifiedName的类型获取类型?或者有更好的方法吗?
答案 0 :(得分:0)
就目前而言,我添加了一个默认的命名空间/程序集来搜索一个裸类名。这可以扩展为允许一个非hack方法注册一个命名空间/程序集列表,在这个方法中搜索DTO类,所有这些都包含在某种解析器类中。