C#序列化对象集合

时间:2009-09-23 01:38:27

标签: c# list serialization

我正在开发一个ASP.NET应用程序,它有一个继承自定义对象列表的类。

public class UserRoleList : List<UserRoleBO> {
    public UserRoleList() { }
}

如何在C#中使这个类可序列化?

3 个答案:

答案 0 :(得分:2)

我相信你真的需要确保UserRoleBO是可序列化的,列表将自行处理。这假定您要序列化的值是UserRoleBO和UserList上的公共属性。有关详细信息,请参阅What is the point of the ISerializable interface?

答案 1 :(得分:2)

您需要执行以下操作

  1. 确保UserRoleList可序列化
  2. 确保UserRoleBO可序列化
  3. 确保UserRoleBO中所有字段的类型都是可序列化的(这是递归的)
  4. 最简单的方法是将[Serializable]属性添加到类中。这在大多数情况下都有效。

    另一方面,从List<T>派生出来通常是一个坏主意。这个类并不是从派生出来的,并且在从List<T>引用中使用派生类的sceanarios中可以阻止任何专门化它的行为的尝试。你能解释一下为什么要以这种方式推导出来吗?可能有更强大的解决方案。

答案 2 :(得分:1)

像这样:

[Serializable]
public class UserRoleList : List<UserRoleBO> {
    public UserRoleList() { }
}

(注意'Serializable'标签需要在所有需要序列化的类上(所以父类也是如此。

然后使用二进制序列化来完成它。