如何使用DataContractSerializer序列化Exception對象列表(還包括派生異常,例如FileNotFoundException)?DataContractSerializer和列表(例外)
我總是得到關於序列化程序不知道列表中的類型的錯誤,所以我設計了一個解決方法。
它看起來是這樣的:
Dim XmlSerializer As New DataContractSerializer(_
ExceptionsList.GetType(), ExceptionsList.Select(Function(i) i.GetType))
XmlSerializer.WriteObject(Stream, List)
這工作。我只是將所有不同的異常類型添加到已知類型的列表中,並且它可以工作。但是在反序列化中,我被卡住了。問題是我不知道事先存儲在文件中的例外類型。
這個作品謝謝,我想知道你爲什麼不能用普通的序列化程序來做這件事。 – prof23030 2010-01-30 02:07:37
由於常規序列化程序只是序列化爲可互操作的XML。你需要告訴它哪些類型是可能的,否則它不能反序列化。 NetDataContractSerializer通過向XML添加類型元數據來解決這個問題。這也是爲什麼你不能用它來與非.NET服務或客戶進行通信的原因。 – 2010-01-30 02:09:11
我剛剛發現NetDataContractSerializer無法序列化在中等信任(我在共享主機,如果我嘗試序列化我得到安全例外),所以我想我會找到另一種方式。 – prof23030 2010-02-02 03:26:13