假设有关文档的信息存储在条形码中,并且信息的结构根据文档的类型而不同。但是文件的类型事先是未知的;条形码告诉我们,什么样的文件,我们正在处理:JsonConvert.DeserializeObject在C#中只有所需对象的字符串名称已知
条码值不会存放分隔字符串是这样的:
author|date|subject
author|date|subject|approvedby1;approvedby2
但会包含JSON对象:
FOO|{"author": "Smokey", "date": "01/01/2015", "subject": "widgets"}
GOO|{"author": "Smokey", "date": "01/01/2015", "subject": "widgets", "approvals": ["Mike","Jane"]}
当我们获取条形码文本数据,我们从|
定界符左侧的值中看到,我们需要实例化FOO
或GOO
。我们抓住|
右侧的字符串并将其送到JsonConvert
。
如何告诉JsonConvert.DeserializeObject<some type>
从其json表示中返回一个GOO对象?
var myGoo = JsonConvert.DeserializeObject<?>(jsonStringGOO)
尖括号之间的内容< >
?
编辑:理想情况下,不诉诸于switch语句。
我们假设当前命名空间包含所有可能类型的类定义。
我已经很少使用Reflection了,并且在Assembly.GetType行上得到一个错误,指出“非静态字段需要对象引用,方法,或者属性Assembly.GetType(string)'。必须实例化哪个反射对象? – Tim
对不起 - 编辑 –
谢谢。 “MyAssembly”后面的引号是否在内部或外部?我假设“+”。“ +'是吗? – Tim