假設有關文檔的信息存儲在條形碼中,並且信息的結構根據文檔的類型而不同。但是文件的類型事先是未知的;條形碼告訴我們,什麼樣的文件,我們正在處理: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