2017-10-11 36 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