[英]When is the class constructor called while deserialising using XmlSerializer.Deserialize?
我的應用程序使用XmlSerializer保存一個類,然后在需要時通過再次反序列化來創建一個實例。 我想在我的構造函數邏輯中使用我的類的一些屬性成員(在反序列化期間分配)。 可以假設首先分配屬性,並且一旦分配了所有屬性,就會調用構造函數嗎?
繼續討論這個主題,是否有關於反序列化過程中發生的事件序列的文檔?
不,假設在構造函數運行時將設置屬性是不行的。 反之亦然。 構造函數是在創建對象實例時運行的第一段代碼。 在構造函數開始執行之前,不可能設置屬性。
XML反序列化過程大致如下所示
解決此問題的方法是使用工廠方法執行反序列化,然后運行取決於所設置屬性的邏輯。 例如
class MyClass {
...
public static MyClass Deserialize(string xmlContents) {
var local = ... // Do the XML deserialization
local.PostCreateLogic();
return local;
}
}
構造函數是對象的創建。 在分配屬性值之前,需要創建對象。 然后,將首先調用構造函數。
我不知道序列的任何文檔。 但如果你的課程不是那么大,可以添加一些斷點,你會看到哪些事件是第一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.