2017-10-11 43 views
1

我有一個叫UnitsManager的課。在這個類是一個枚舉:反序列化Serializationinfo存儲中的枚舉?

public enum TimeUnit 
{ 
    Seconds, 
    Milliseconds, 
    Minutes, 
    Hours, 
    Days, 
    Months, 
    Years 
} 

這個枚舉名爲Process另一個類使用。它有一個屬性:

private TimeUnit cycleTimeUnit = TimeUnit.Seconds; 
    [XmlAttribute("CycleTimeUnit")] 
    public TimeUnit CycleTimeUnit 
    { 
     get { return this.cycleTimeUnit; } 
     set { this.cycleTimeUnit = value; } 
    } 

我試圖序列化和反序列化Process類。我實現了ISerializable的Process

public override void GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     base.GetObjectData(info, context); 

     info.AddValue("CycleTime", CycleTime); 
     info.AddValue("CycleTimeUnit", CycleTimeUnit); 
    } 

我的問題出現在反序列化

private Process(SerializationInfo info, StreamingContext context) 
    { 
     CycleTime = info.GetDouble("CycleTime"); 
     CycleTimeUnit = info.????("CycleTimeUnit"); // <--- ??? 
    } 

如何施放此作爲一種CycleTimeUnit

回答

2

試試這個:

private Process(SerializationInfo info, StreamingContext context) 
{ 
    CycleTime = info.GetDouble("CycleTime"); 
    CycleTimeUnit = (TimeUnit) info.GetValue("CycleTimeUnit", typeof(TimeUnit)); 
} 
+0

差不多! 'CycleTimeUnit =(TimeUnit)info.GetValue(「CycleTimeUnit」,typeof(TimeUnit));'做了詭計!謝謝你的幫助。 – cce1911

+0

不客氣,我編輯了未來的正確答案。 – Nikolaus