我從各種異常派生了幾個類。現在VS給出了這個問題標題中的警告。派生自異常類警告:CA2237:用SerializableAttribute標記ISerializable類型
1.有人能解釋一下抑制這條規則的含義嗎?
2.您能解釋一下here的規則:「不要在異常類中禁止此規則的警告,因爲它們必須是可序列化的才能在應用程序域中正常工作。」?
謝謝。
P.S.那麼我自己有一個答案。您確實必須將異常標記爲可序列化。它們在同一個AppDomain中沒有這個屬性就可以正常工作。但是,如果您嘗試從其他域中捕獲它,則必須進行序列化才能跨越應用程序邊界。這是我找到的主要原因。
在做了一些閱讀和玩AppDomain邊界之後,.NET確實開始給它自己的例外說這些類沒有[Serializable]。關於appDomain.CreateInstance(...,classNameForThisDomain,...)的一個有趣的觀點是,它創建並在應用程序域中運行classNameForThisDomain,與我們僅在此類從MarshalByRefObject派生時執行的應用程序域不同。但是如果沒有,classNameForThisDomain會被加載到同一個AppDomain中! – Nickolodeon