【问题标题】:Custom ISerializable from Base class来自基类的自定义 ISerializable
【发布时间】:2016-01-12 07:54:05
【问题描述】:

我正在尝试将会话保留在 SQLServer 中。我知道一个对象是否需要存储在 SQL 中而不是需要序列化。而且我也知道,如果需要,我需要在每个类上放置 [Serializable] 属性。但问题是我有超过 2000 个对象并且还在不断增长。它们紧紧地结合在一起。如果我将其中一个放到会话中,我可能需要为所有这些添加 [Serializable] 属性,这是没有意义的。我想知道的是如何为 ISerializable 接口编写相同的代码,就像基类中的 [Serializable] 属性一样?任何的想法?或者我应该将 [Serializable] 添加到每个类。如果我这样做有什么缺点吗?

【问题讨论】:

    标签: c# serialization iserializable


    【解决方案1】:

    创建一个更具体的小类,代表您实际需要在会话中持久保存的数据,并仅在该类上应用[Serializable] 属性。

    请注意[Serializable] 不是 Sql Server 本身所需要的,而是 asp.net 会话中的会话管理所需要的

    【讨论】:

    • 第一个选项可以接受,但由于项目特定的限制,我无法创建“更具体”的类。
    • 好的。但是,在您实际序列化之前,添加 Serializable 属性不会产生任何副作用。在这种情况下,如果正在序列化的对象图中的任何类型没有应用 SerializableAttribute 属性,则运行时将引发 SerializationException。 (来源MSDN
    • 为什么不是所有的对象都默认是可序列化的?看起来我需要为我的所有类添加 [Serializable] 属性。一个傻瓜的差事:\
    • [Serializable] 是一个“标记”,用于强调类可以序列化这一事实。并非所有序列化程序都需要它(即 XmlSerializer\DataContractSerializer 不使用它),但您需要它来实现 Session 持久性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多