2012-11-28 23 views
17

爲.NET設計自定義異常時,MSDN提供了these guidelines。特別是,指南指出,一個自定義異常:在可移植類庫中實現自定義異常

  • 應該是可序列化,即實現ISerializable並與[Serializable]屬性裝飾,
  • 應該實現(反)序列化的構造,即protected CustomException(SerializationInfo info, StreamingContext context)

然而,在Portable Class LibrarySerializableAttributeISerializableSerializationInfo既不支持。

我應該如何在可移植類庫中充分設計自定義異常,該類同時針對.NET Framework和一個或多個平臺?

回答

17

基本上,忽略該指導 - 這是針對完整的.NET,並不適用於可移植類庫項目。事實上,如果我們看(說)Silverlight(包括WP7),我們看到:

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

坦率地說,該需求的消費主體是遠程 ...,這是不是在巨大的需求了。

+0

非常感謝澄清,馬克。我懷疑是這種情況(例如,該指南並未針對.NET 4.5進行更新),但感覺更確保從可靠來源獲得確認。 –

+1

@Anders我在「社區內容」部分添加了一些註釋 - 它們可能在某個時候出現。 –

+1

儘管如此,其中的一些仍在運行時執行。例如,如果您嘗試將某些內容添加到Exception.Data集合中,它將在整個Framework上引發異常,但不會在Silverlight上引發異常。 –