【发布时间】:2013-06-21 11:30:59
【问题描述】:
我们有 2 个(或更多)类:
class numOne
{
string name;
int age;
}
class numTwo
{
Bitmap pImage;
}
我有一个包含这些类的实例的 ArrayList:
ArrayList list = new ArrayList();
numOne n1 = new numOne(){ name="sth", age =18 };
numTwo n2 = new numTwo(){ pImage = new Bitmap("FileAddress") };
list.Add(n1);
list.Add(n2);
我知道我们什么时候有 A 类。如何使用BinaryFormatter 序列化和反序列化对象(如列表)?
我不知道如何将这个操作用于 ArrayLists 和其他类似的复杂对象。
【问题讨论】:
-
对于
DataContractSerializer,有一个overload of the constructor,它采用列表中已知类型的IEnumerable<Type>。您可以这样做以使其采用数组列表具有的任何类型:new DataContractSerializer(typeof(ArrayList), list.Select(x => x.GetType()))。 -
顺便说一句,您为什么要在列表中混合类型?对我来说,这是一种代码味道。除非它们从公共基类扩展,在这种情况下您可以使用
List<BaseClass>。
标签: c# .net serialization