asp.netUserControl用にViewStateに保存したいこのようなクラスがあります。基本的に、いくつかのメソッドを使用して汎用リストを拡張しますが、いくつかのプロパティも追加します。
public class MyListClass: List<MyObject>
{
public string ExtraData;
// some public methods
}
MyObjectはシリアル化可能で、メソッドは次のように実装されています。
[Serializable()]
class MyObject
{
public MyObject(SerializationInfo info, StreamingContext ctxt)
{
Prop1 = (string)info.GetValue("Prop1", typeof(string));
//...
}
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
info.AddValue("Prop1",Prop1);
}
}
また、汎用リストは本質的にシリアル化可能です。ViewStateは正常に動作しますList<MyObject>
が、MyListClassのシリアル化を実装する方法がわからないようです。
直感的に私がやりたいのは次のようなものです。
public MyListClass(SerializationInfo info, StreamingContext ctxt)
{
ExtraData= (string)info.GetValue("ExtraData", typeof(string));
this = (List<MyClass>)info.GetValues("BaseList",typeof(List<MyClass>));
}
明らかにそれはうまくいきません。これを行う正しい方法は何ですか?