none
WP8.1 List<Type>如何序列化 RRS feed

  • 问题

  • 代码如下:

    MemoryStream sessionData = new MemoryStream();
                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), knownTypes);
                    serializer.WriteObject(sessionData, this._pageState);

    knownTypes为List<Type>,存储序列化Dictionary的数据类型

    当我使用反序列化时

       DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), knownTypes);
         _pageState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());

    同样需要knownTypes,而这个knownTypes我必须要保存到本地,当我下次启动应用时,可以读取knownTypes,再反序列化Dictionary而获得数据,

    但奇怪的是,我把knownTypes这个List<Type>数据保存到本地时,一直失败,不能序列化成文件写入,这样我就无法启动应用时,读取存储的数据类型,就无法拿到我保存的Dictionary数据了

    请教,有什么办法,可以存储List<Type>本地到数据?

    2014年12月29日 9:24

答案

  • 迂迴的方法或許可行, 你可以使用 Type.AssemblyQualifiedName 属性獲得其AssemblyQualifiedName . 並保存這些名稱 (字串總是比較容易的)

    然後當你從本地數據讀回已經保存的這些名稱後,  再調用 Type.GetType 靜態方法 (String) 還原為 Type 型別


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。



    2014年12月31日 8:24