2008-10-08 26 views
4

拋出異常時拋出:「System.ComponentModel.ReflectPropertyDescriptor沒有被標記爲可序列化」奇例外在.NET

這是否意味着我錯過了標記爲可序列化自己的東西,或者是這個東西超出了我的控制?

+0

事實證明,這是一個Databinding問題。我能夠消除它。感謝您的幫助。 – 2008-10-08 14:11:58

回答

1

你在班上有這種類型的領域嗎?如果是這樣,你將不得不自己實現ISerializable - 自動實現要求你所有的字段都被標記爲可序列化。

4

你可以給出更多的上下文以瞭解何時發生這種情況,以及哪些序列化器?大多數串行不得不忽略某些成員的能力 - ,NonSerializedAttributeBinaryFormatterXmlIgnoreAttributeXmlSerializer

有一個PropertyDescriptor比如在你的類通常意味着你的類被作爲一個屬性袋;在這種情況下,您可能需要執行自定義序列化(ISerializable/IXmlSerializable)。如果該字段出於某種其他原因,請將其標記爲忽略。

當您有一個事件(例如更改通知事件/ INotifyPropertyChanged)時,此UI(或類似症狀)也很常見(數據綁定);在這種情況下,您需要將後臺字段標記爲非序列化。我不知道VB,但與C#你可以做到這一點與「田間般的事件」,因爲如此:

[field: NonSerialized] 
public event EventHandler BarChanged; 
+0

* facepalm *我的臉砸在屏幕上,想知道爲什麼[NonSerialized]不適合我的活動。缺少`字段:`。 – 2016-12-02 16:32:52