Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在DataContractSerializer之后初始化私有字段_C#_Xml Serialization_Datacontractserializer - Fatal编程技术网

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

C# 如何在DataContractSerializer之后初始化私有字段,c#,xml-serialization,datacontractserializer,C#,Xml Serialization,Datacontractserializer,我知道可以使用DataContractSerializer序列化私有字段,但我只想保存最少量的数据,这些数据很容易被人工编辑。在DataContractSerializer完成其工作之后,是否有一个函数可以在DataContractSerializer类中重写或设置,该类在完成反序列化之后只设置私有字段 [DataContract()] [KnownType(typeof(stateCom))] [KnownType(typeof(stateIp))] abstract public clas

我知道可以使用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
方法,并将其应用为:

[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
    }
}