假设我有:
List<object> mainList = new List<object>();
它包含以下内容:
List<string> stringList = new List<string();
List<CustomClass> custList = new List<CustomClass>();
mainList.Add(stringList);
mainList.Add(custList);
将数据序列化
Stream stream;
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, mainList);
反序列化
Stream stream = (Stream)o;
BinaryFormatter formatter = new BinaryFormatter();
List<object> retrievedList = (List<object>)formatter.Deserialize(stream);
目前,我收到一个错误,即流读取(反序列化)已经到达了流的末尾,但没有检索到任何值。
除了...,我需要指定其他内容吗?
[Serializable]
public class CustomClass { .... }
在自定义类中如何使其工作?我能否每次反序列化包含不同类型对象的List>?
我尝试过了。
IList list = (IList)Activator.CreateInstance(typeof(custClassList[0]))
我尝试发送和接收信息,但遇到了相同的问题。
然而我可以序列化和反序列化指定类型或列表,但我真的需要它是动态的。
Serializable
属性或实现ISerializable
接口,则无法使用BinaryFormatter
序列化类型。 - Sriram SakthivelList<object> retrievedList = formatter.Serialize(stream);
还是来自你的代码?;) - olydisList<object> retrievedList = formatter.Serialize(stream);
更正为List<object> retrievedList = (List<object>)formatter.Deserialize(stream);
才能编译通过。我认为这是一个笔误,请进行更正。 - Sriram SakthivelDeserialize
(当然要进行转换) - olydisSerialize
... - olydis