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

And*_*son 17 .net c# exception portable-class-library windows-store-apps

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

  • 应该是可序列化的,即实现ISerializable和用[Serializable]属性装饰,和
  • 应该实现(de)序列化构造函数,即protected CustomException(SerializationInfo info, StreamingContext context).

然而,在便携式类库既不的SerializableAttribute,ISerializableSerializationInfo得到支持.

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

Mar*_*ell 17

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

[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
public class Exception
Run Code Online (Sandbox Code Playgroud)

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