3 回答

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

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