我有一个像这样的类,我想在 ViewState 中保存一个 asp.net UserControl。它基本上用一些方法扩展了一个通用列表,但也添加了一些属性,例如
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>));
}
显然那是行不通的。这样做的正确方法是什么?