2010-08-26 87 views
0

我有ISet類型的屬性的類。我想序列化這個類,但不知道如何處理ISet。如何序列化集合

[Serializable]  
class Question: ISerializable 
{ 
    private int id; 
    public int Id 
    { 
    get{return id;} 
    set{id = value;} 
    } 

    private ISet answerChoice; 
    public ISet AnswerChoices 
    { 
    get{return answerChoices;} 
    set { answerChoices = value; } 
    } 

    public Question(SerializationInfo info, StreamingContext context) 
    { 
     id = info.GetInt32("id"); 
     answerChoices = //how to deserialize this collection 
    } 

    void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     info.AddValue("id", id); 
     info.AddValue("ac", answerChoices); 
    } 
} 

有沒有人試圖讓相同?請幫幫我。

+0

您是否在談論.NET 4.0中引入的ISet 通用接口? http://msdn.microsoft.com/en-us/library/dd412081.aspx – Virtlink 2010-08-26 12:05:56

+0

我的意思是從NHibernate的Iesi.Collections.ISet,但如果您將ISet更改爲IList我的問題不會改變。 – Kate 2010-08-26 12:11:27

回答

1

如何:

info.GetValue("ac",...); 

爲什麼你實現你自己的序列,如果你不添加任何額外的價值?

+0

如果您不添加任何附加值,爲什麼要實現自己的序列化? ---要添加對象到ViewState,你應該實現ISerializable接口 - 這是一個規則! 如何:info.GetValue(「ac」,...); ---我應該寫什麼來代替省略號? – Kate 2010-08-26 12:19:59

+0

不,你只需要將它標記爲可序列化(並確保它是可序列化的) – 2010-08-26 12:33:08

+1

@Kate,info.GetValue(「ac」,typeof(ISet))應該可以工作。 @Alex,@Kate - 請注意,爲了序列化如上所述,執行ISet的類型必須是可序列化的。 – VinayC 2010-08-26 12:50:35