【问题标题】:Implementing custom exceptions in a Portable Class Library在可移植类库中实现自定义异常
【发布时间】:2012-11-28 12:06:48
【问题描述】:

在为 .NET 设计自定义异常时,MSDN 提供了these guidelines。特别是,指南声明自定义例外:

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

但是,在 Portable Class Library 中,SerializableAttributeISerializableSerializationInfo 都不支持。

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

【问题讨论】:

    标签: c# .net exception windows-store-apps portable-class-library


    【解决方案1】:

    基本上,忽略该指导 - 这是针对完整 .NET 的,不适用于可移植类库项目。事实上,如果我们查看(比如说)Silverlight(包括 WP7),我们会看到:

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

    坦率地说,该需求的主要消费者是远程处理...现在需求量不大。

    【讨论】:

    • 非常感谢您的澄清,马克。我怀疑是这种情况(例如,该指南尚未针对 .NET 4.5 进行更新),但感觉更能确保从可靠来源获得确认。
    • @Anders 我在“社区内容”部分添加了一些注释——它们可能会在某个时候出现。
    • 不过,其中一些是在运行时强制执行的。例如,如果您尝试向 Exception.Data 集合添加某些内容,它将在整个 Framework 上引发异常,但不会在 Silverlight 上引发异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多