【问题标题】:C# Serializing a Collection of ObjectsC# 序列化对象集合
【发布时间】:2010-11-30 14:48:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# list serialization


    【解决方案1】:

    我相信您真的只需要确保 UserRoleBO 是可序列化的,并且列表会自行处理。这假定您要序列化的值是 UserRoleBO 和 UserList 上的公共属性。欲了解更多信息,请参阅What is the point of the ISerializable interface?

    【讨论】:

    • 您还必须确保 UseRoleList 是可序列化的
    【解决方案2】:

    您需要执行以下操作

    1. 确保 UserRoleList 是可序列化的
    2. 确保 UserRoleBO 是可序列化的
    3. 确保 UserRoleBO 中所有字段的类型都是可序列化的(这是递归的)

    最简单的方法是将 [Serializable] 属性添加到类中。这在大多数情况下都有效。

    另一方面,从List&lt;T&gt; 派生通常是个坏主意。该类并不意味着派生自该类,并且在从List&lt;T&gt; 引用中使用派生类的场景中,任何专门化其行为的尝试都可能受到阻碍。你能解释一下为什么要以这种方式推导吗?可能有更强大的解决方案。

    【讨论】:

    【解决方案3】:

    像这样:

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

    (请注意,“Serializble”标签需要在所有需要序列化的类上(因此也是父类。

    然后使用 BinarySerialization 来做。

    【讨论】:

      猜你喜欢
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多