首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 資料契約序列化事件:OnSerializing/OnSerialized/OnDeserializing/OnDeserialized 四大回調

     編輯:關於.NET

四大序列化事件

事件觸發時機屬性
Serializing序列化前[OnSerializing]
Serialized序列化後[OnSerialized]
Deserializing反序列化前[OnDeserializing]
Deserialized反序列化後[OnDeserialized]

方法簽名固定:void MethodName(StreamingContext context)。每個事件只能標註一個方法。

應用場景:反序列化後初始化非資料成員

反序列化不呼叫建構函式,可用 OnDeserialized 初始化未標記 [DataMember] 的欄位。

[DataContract(Name="Employee", Namespace="HenllyeeData")]
public class EmployeeEntry {
    private string _companyName; // 非 DataMember
    [DataMember(Order=0)] public string Name { get; set; }
    [DataMember(Order=1)] public int Age { get; set; }
    [DataMember(Order=2)] public decimal Salary { get; set; }
    [DataMember(Order=3)]
    public string Info {
        get => $"Name:{Name}\nAge:{Age}\nSalary:{Salary}\nCompany:{_companyName}";
        set { }
    }

    [OnDeserialized]
    void OnDeserialized(StreamingContext context) {
        _companyName = "ECI"; // 反序列化後補齊
    }
}

Client 呼叫服務取得物件時,Info 屬性即能正確顯示 CompanyName。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved