如何在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
}
}