2011-06-11 47 views
3

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

通常我会用ReadOnlyCollection和readonly属性来做到这一点,但是这会弄乱反序列化。我可以在这里做什么样的事情?

回答

2

这不值得污染你的域模型只是更多的XML序列化友好,所以你可以实现ISerializable Interface并编写你自己的序列化例程为任何序列化不友好的集合。

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

您可以在班级中实施ISerializable。这样,当类被反序列化时,一个特殊的构造函数被调用,并且你可以保持你的类真正不可变

0

实现ISerializable接口并手动执行

相关问题