【.Net】CollectionDataContract 無法序列化額外屬性

CollectionDataContract 無法序列化額外屬性

系統環境:Windows 10、VS2019、.Net Framework 4.6.1

內容摘要
類別繼承 List<T>,因為使用WCF傳輸,需加上 [CollectionDataContract] ,但加上後無法序列化該物件的額外屬性

發生原因
如果是繼承集合類別,需加上 [CollectionDataContract],但WCF 預設只序列化集合內容,無法序列化類別內別的屬性。
因為WCF在介接時,設定服務參考的時候可以選擇集合類別的Type,例如Server 為List<int>,產生出參考可以是int[] 或 List<int>,因此如果類別有別的屬性,都會被忽略掉。

解決辦法
Solution 1 : 改繼承 IList<T>
缺點: 需要實作IList<T>,太過麻煩

Solution 2 : 不要繼承
集合直接放在屬性,結束 !!

相關連結
http://www.borismod.net/2009/04/wcf-collectiondatacontract-and.html