2011-06-11 86 views
3

我設計了一個具有兩個屬性的類 - 作爲字符串類型和對象列表。我正在加載一些xml並將它反序列化到類的一個實例中,這非常有效。我想要的是每個實例的一切都是不變的。這些類作爲API公開,爲了完整性,我不希望更改對象的值。如果程序員想要不同的東西,他們應該創建新的實例並設置值。只讀(不可變)可序列化類

通常我會用ReadOnlyCollection和readonly屬性來做到這一點,但是這會弄亂反序列化。我可以在這裏做什麼樣的事情?

回答

2

這不值得污染你的域模型只是更多的XML序列化友好,所以你可以實現ISerializable Interface並編寫你自己的序列化例程爲任何序列化不友好的集合。

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

您可以在班級中實施ISerializable。這樣,當類被反序列化時,一個特殊的構造函數被調用,並且你可以保持你的類真正不可變

0

實現ISerializable接口並手動執行

相關問題