2017-10-11 17 views
1

私はUnitsManagerというクラスを持っています。この列挙はProcessと呼ばれる別のクラスで使用されているSerializationinfoストアから列挙型を逆シリアル化しますか?

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

:このクラスで列挙型です。これは、プロパティを持っています

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

私はProcessクラスをシリアライズとデシリアライズしようとしています。私は私の問題は、私はタイプCycleTimeUnitとしてこれをキャストするにはどうすればよいのデシリアライズに

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

来る?

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

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

ProcessクラスにISerializableを実装しましたか

答えて

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

関連する問題