如何使用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