如何序列化类及其对象

时间:2011-11-07 15:43:17

标签: c#

我有这样的类结构:

class A { 
   Dictionary<UInt64, B> listB;
   method1(){}
   methodN(){}
}

class B {       

   Dictionary<UInt32, C> listC;
   Dictionary<UInt32, E> listE;
   List<F> listF;
   method1(){}
   methodN(){}
}

class C { 
   Dictionary<UInt32, D> listD;
   method1(){}
   methodN(){}
}

class D { 
   method1(){}
   methodN(){}
}   

class E { 
   method1(){}
   methodN(){}
}    

class F { 
   method1(){}
   methodN(){}
}

A类是主类,B是A的子类。所有其他类都是B的子类。

我想用所有子类序列化A类。

如何序列化这些对象?

谢谢!

2 个答案:

答案 0 :(得分:1)

因为你说你想通过套接字来做,可能是这样的:

public void SerializeObject(NetworkStream stream, ObjectToSerialize objectToSerialize)
{
   varbFormatter = new BinaryFormatter();
   bFormatter.Serialize(stream, objectToSerialize);
   stream.Close();
}

public ObjectToSerialize DeSerializeObject(NetworkStream stream)
{
   ObjectToSerialize objectToSerialize;
   var bFormatter = new BinaryFormatter();
   objectToSerialize = (ObjectToSerialize)bFormatter.Deserialize(stream);
   stream.Close();
   return objectToSerialize;
}

编辑:注意:代码未经测试。它可能需要一些修改,具体取决于您的流

和Brad评论一样,给你所有的类提供SerializableAttribute。

[Serializable]
class A { 
...
}

答案 1 :(得分:0)

你看过BinaryFormatter了吗?如果客户端具有完全相同的二进制文件,那么这是最简单的方法。

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx

相关问题