在C#中實現接口ISerializable
時,我們提供了一個構造函數,它需要一個SerializationInfo
對象,然後用各種GetInt32
,GetObject
等方法來查詢它,以填充我們試圖反序列化的對象的字段。爲什麼SerializationInfo沒有TryGetValue方法?
實現這個接口,而不是僅僅使用[Serializable]
屬性,是爲了向下兼容的一個主要的原因是:如果我們在某個時候添加新的字段到類,我們可以趕上通過序列化,舊版本拋出的SerializationException
並以適當的方式處理它們。
我的問題如下:爲什麼我們必須使用這些例外來控制流量?如果我正在反序列化大量前一段時間保存的類,那麼每個類中可能每個缺失的字段都會拋出異常,從而導致性能很差。
爲什麼SerializationInfo
類不提供TryGetValue
方法,如果名稱字符串不存在,它將簡單地返回false
?
向誰實施那個類 – 2009-11-04 11:32:54
也許他們在這裏:P – 2009-11-04 11:43:19