【发布时间】:2008-10-01 21:11:32
【问题描述】:
添加到 SqlException.Data 集合的对象是否需要 [Serializable]?
【问题讨论】:
标签: c# .net sqlexception
添加到 SqlException.Data 集合的对象是否需要 [Serializable]?
【问题讨论】:
标签: c# .net sqlexception
是的,他们需要。这是因为 ISerializable 在 Exception 类型中的实现将 Data 属性添加到 StreamingContext 中。并且 Data 属性(它是一个 IDictionary)中的所有对象都必须是可序列化的。 即使不打算构建分布式应用程序,让异常类和实例可序列化也是一种好习惯。
【讨论】:
好吧,严格来说,不...您可以将任何类型添加到异常的数据字典中...但是您为什么要问呢?您认为它们将跨越什么界限?
【讨论】:
如果要跨 appdomain 边界传播异常,则异常及其包含的数据需要可序列化。
这样的场景之一是客户端-服务器应用程序通过远程处理进行通信。如果服务器抛出异常并且需要在客户端处理,框架将不得不对其进行序列化/反序列化。
【讨论】: