繁体   English   中英

只读(不可变)可序列化 class

[英]A read only (immutable) serializeable class

我设计了一个 class 具有两个属性 - 作为字符串类型和对象列表。 我正在加载一些 xml 并将其反序列化到 class 的实例中,效果很好。 我想要的是每个实例的所有内容都是不可变的。 这些类公开为 API,为了完整性,我不希望更改 object 的值。 如果程序员想要不同的东西,他们应该创建新实例并设置值。

通常我会使用 ReadOnlyCollection 和 readonly 属性来执行此操作,但这会破坏反序列化。 我可以在这里做哪些事情?

不值得污染您的域 model 只是对 xml 序列化程序友好,这样您就可以实现ISerializable 接口并为任何不适合序列化的集合编写自己的序列化例程。

void GetObjectData(SerializationInfo info, StreamingContext context)
{
  // ...
}

您可以在 class 中实现ISerializable 这样,当 class 被反序列化时,一个特殊的构造函数被调用,你可以让你的 class 真正不可变

实现 ISerializable 接口并手动完成

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM