C# · 12月 27, 2021

c# – 为什么我不能使类Serializable?

我在我的viewstate存储一些对象,我想知道是否有任何缺点,使一个类Serializable?

使所有类可序列化是不好的做法吗?

解决方法 首先.避免观看状态.

一般来说,序列化(textual)用于传输对象.

您应该避免将任何类标记为不是DTO(数据传输对象)或消息类的可序列化.我们这样做有几个原因.以串行格式拾取您的类的内容可能没有非DTO类的方法信息(在原始程序集中).其次,一个类可以引用一个资源(DB连接,文件句柄等)不要序列化这些,因为除序列化不重新建立资源连接和状态,除非明确设计,但仍然是一个坏主意.

总结如下:当您使用上下文方法并存储要使用的第三方的数据时,请勿序列化. (像使用方法的服务响应是一个坏主意).并且当类包含资源引用时不要序列化.尽可能保持可序列化的对象清除方法.这可能需要重新考虑服务类型模式.

做序列化DTO和消息.

这更多的是设计选择.