如何在DataContractSerializer之后初始化私有字段

问题描述:

我知道您可以使用DataContractSerializer序列化私有字段,但我只想保存容易人为编辑的最小数量的数据。在DataContractSerializer完成它的事情之后,是否有一个函数可以在DataContractSerializer类中重写或设置,该类只是在完成反序列化之后设置了专用字段?如何在DataContractSerializer之后初始化私有字段

[DataContract()] 
[KnownType(typeof(stateCom))] 
[KnownType(typeof(stateIp))] 
abstract public class state 
{ 
    [DataMember()] 
    public string tag; 
    [DataMember()] 
    public byte Id; 

    public HandleConnection master; 


    // default data contstructor for xml serialization 
    public state() 
    { 
    } 

    public abstract void openPort(); 


    public abstract void closePort(); 
} 

您可以创建例如OnDeserialized方法并将OnDeserializedAttribute应用于它:

[DataContract()] 
[KnownType(typeof(stateCom))] 
[KnownType(typeof(stateIp))] 
abstract public class state 
{ 
    [DataMember()] 
    public string tag; 
    [DataMember()] 
    public byte Id; 

    public HandleConnection master; 


    // default data contstructor for xml serialization 
    public state() 
    { 
    } 

    public abstract void openPort(); 


    public abstract void closePort(); 

    [OnDeserialized] 
    internal void OnDeserialized(StreamingContext context) 
    { 
     // this is called after deserialization 
    } 
}