我设计了一个具有两个属性的类 - 作为字符串类型和对象列表。我正在加载一些xml并将其反序列化为类的实例,这非常有效。我想要的是每个实例的所有内容都是不可变的。这些类作为API公开,为了完整性,我不希望更改对象的值。如果程序员想要不同的东西,他们应该创建新的实例并设置值。
通常我会使用ReadOnlyCollection和readonly属性执行此操作,但这会影响反序列化。我可以在这做什么样的事情?
答案 0 :(得分:2)
不值得污染您的域模型只是为了更友好的xml序列化程序,因此您可以实现ISerializable Interface并为任何非序列化友好的集合编写自己的序列化例程。
void GetObjectData(SerializationInfo info, StreamingContext context)
{
// ...
}
答案 1 :(得分:0)
您可以在班级中实施ISerializable
。这样,当反序列化类时,会调用一个特殊的构造函数,你可以保持你的类真正不可变
答案 2 :(得分:0)
实施ISerializable接口并手动执行