2013-01-08 21 views
0

我使用Json.NET進行序列化和反序列化,TypeNameHandling設置爲TypeNameHandling.All。這將類型和程序集寫入json文件,例如"$type":"Testing.Utils.Entry, TestAssembly"如何處理在Json.NET中解析隨機彙編和類名

但是,當我們保護可執行文件時,這些名稱會發生​​更改,每次我們保護它時都會更改這些可執行文件。所以,我想讓Json.NET自動解決它在運行時的問題。例如,這個名稱可能完全改變,也可以改爲'ABC.DEF'而不是'ABC.DEF.GHI'。

因爲我想要一致地保存條目,所以運行時的'ABC.DEF'類型應始終保存到Testing.Utils.Entry

+0

不能將所有可序列化類型導出到不同的非受保護程序集? –

+0

合併所有單獨的程序集。我可以做到這一點,但我有一個額外的圖書館,我不想要。我無法再一次合併這個程序,因爲一旦程序受到保護,程序集合合不再起作用。 –

+0

不能將您的代碼保護設置爲確定性的嗎?例如。在.NET Reactor中,你可以做到這一點,所以名稱不會每次都改變爲新的值 - 它們總是以相同的方式轉換。 –

回答

0

爲了將來的參考,我設法解決這個問題,使用SerializationBinderBindToNameBindToType函數。

+0

我努力使它工作,並且我遇到了與以前相同的問題。您能否請一些代碼來幫助我?我已經嘗試過每一個發佈的解決方案都無濟於事。也許我缺乏面向對象編程的全部知識是主要問題。 – melancia

+0

是的,使用如下格式:new BindToNameSerialization {AssemblyTo =「YourAssemblyName」,TypeTo =「TheNameOfTheClassYouWantToStore」,TypeFrom = typeof(TheClassYouWantToStore)}。這可以用於保存和閱讀。在Json.NET網站上,您可以找到保存和閱讀可應用SerializationBinder的位置所需的方法。 –

+0

非常感謝。我會試一試,讓你知道。我最終在論壇上發佈了一個新問題。 – melancia