默认情况下,静态类无法被序列化,因为无法实例化对象;类的静态属性无法序列化,因为静态属性属于类而非具体实例。那么怎样才能实例化静态属性呢?可以用下面的方法:
首先,XML序列化可以通过BinaryFormatter或者SoapFormatter实现。请按照以下步骤通过类的静态属性完成XML序列化。
1. 让类的静态属性实现ISerializable并且把这个类设为Serializable。
2. 实现GetObjectData方法。
3. 新建一个和GetObjectData方法相同结构的构造方法。
序列化过程中,这个类实际上调用了GetObjectData方法。反序列化时,类调用相同的构造方法实例化。
更多细节的内容,请参阅http://msdn.microsoft.com/en-us/magazine/cc301767.aspx
这里是含有静态属性的类:
[Serializable]
public class MyClass : ISerializable
{
static int? sindex;