3 回答

TA貢獻1998條經驗 獲得超6個贊
XML 序列化注意事項 使用 XmlSerializer 類時,應考慮下列情況: Sgen.exe 工具專門用于生成序列化程序集,以獲得最佳性能。 序列化數據只包含數據本身以及類的結構。不包括類型標識和程序集信息。 只能序列化公共屬性和字段。如果需要序列化非公共數據,請使用 BinaryFormatter 類而不是 XML 序列化。 類必須有一個將由 XmlSerializer 序列化的默認構造函數。 不能序列化方法。 XmlSerializer 可以以不同方式處理實現 IEnumerable 或 ICollection 的類,條件是這些類滿足某些要求,如下所示。 實現 IEnumerable 的類必須實現帶單個參數的公共 Add 方法。Add 方法的參數必須與從 GetEnumerator 方法返回的 IEnumerator.Current 屬性所返回的類型一致(多態)。 除實現 IEnumerable 外還實現 ICollection 的類(如 CollectionBase)必須有一個值為整數的公共 Item 索引屬性(在 C# 中為索引器),并且必須有一個整數類型的公共 Count 屬性。傳遞給 Add 方法的參數必須與從 Item 屬性返回的類型相同或與該類型的某個基的類型相同。 對于實現 ICollection 的類,要序列化的值將從索引的 Item 屬性檢索,而不是通過調用 GetEnumerator 來檢索。另外,除返回另一個集合類(實現 ICollection 的集合類)的公共字段之外,將不序列化其他公共字段和屬性。

TA貢獻1785條經驗 獲得超4個贊
呵呵,沒有嘗試過,不太清楚。 但是,我實現的一套Serialization機制中也需要被序列化的對象有默認構造函數。否則,很難確定怎樣構造這個對象。 .NET 提供了一個TypeConverter.CreateInstance的支持,不知道系統的XmlSerializer有沒有使用這套機制。你可以嘗試一下。
- 3 回答
- 0 關注
- 256 瀏覽
添加回答
舉報