每當我遇到這個屬性,我總是看到這樣的用法:DataContract祕密行爲?
[DataContract]
class DataTransferObject
{
[DataMember]
public int Value {get;set;}
}
而且在這個例子中所有繼承的成員應適用的DataMember屬性爲每個屬性或領域,這可能導致非常笨拙和poilerplate代碼。但是,最近我發現(也許祕密功能?)用它的一個非常優雅的方式:
[DataContract]
public abstract class DTOBase
{
}
public class MyDTO : DTOBase
{
public int Value {get;set;}
public MyDTO(){} //important part is here
}
重要的部分:你應該總是明確定義參數構造函數,否則將無法正確序列化。
是的。它將序列化其所有公共成員,不管多深將繼承,而無需將屬性應用於成員或類定義。
這是不知何故記錄在某處(我沒有找到)?因爲,我非常支持可以避免多少樣板文件。