在可移植类库中实现自定义exception

在为.NET设计自定义exception时,MSDN提供了这些指南 。 特别是,指南声明了一个自定义exception:

  • 应该是可序列化的,即实现ISerializable并使用[Serializable]属性进行修饰,并且
  • 应该实现(de)序列化构造函数,即protected CustomException(SerializationInfo info, StreamingContext context)

但是,在可移植类库中,不支持SerializableAttributeISerializableSerializationInfo

我应该如何在同时针对.NET Framework和一个或多个平台的可移植类库中充分设计自定义exception?

基本上,忽略该指导 – 即完整的.NET,并不适用于可移植类库项目。 实际上,如果我们看一下(比方说) Silverlight (包括WP7),我们会看到:

 [ClassInterfaceAttribute(ClassInterfaceType.None)] [ComVisibleAttribute(true)] public class Exception 

坦率地说,这个要求的主要消费者是远程服务 ……现在这并不是一个巨大的需求。