我有一個具有bool屬性的簡單類。該屬性的'Get'邏輯執行存儲過程以從數據庫返回位字段。基於DB值的序列化和反序列化屬性
然後,我序列化這個類,並將它保存到數據庫中的XML字段。它保存類和布爾屬性就好,沒問題。
我似乎遇到的問題是當我反序列化這個類時。該類deserilizes就好了,但是當驅動bool字段的數據已更新時,似乎該類只識別XML中序列化的內容,並且它不回頭查看數據庫以獲取新的bool值(不執行我的程序獲取新的更新位字段)。
我的解決方案是將XmlIgnoreAttribute屬性添加到此字段,因此它不是以序列化開始的。但是我想知道是否有人注意到這一點和/或可以幫助我理解.NET XmlSerializer類的內部工作。
謝謝!
[XmlIgnoreAttribute]
public bool IsUpdated
{
get
{
DataTable dtResults = mclsSQLServerTool.LoadDataTable("exec stp_RL_SEL_NameIsUpdated '" + mstrName + "'");
bool blnIsUpdated = Convert.ToBoolean(dtResults.Rows[0]["RU_bitIsUpdated"]);
return blnIsUpdated;
}
}
我有點困惑。我認爲(沒有檢查)XmlSerializer會忽略只讀簡單值(不是列表)。這是你的實際代碼嗎?你期望*發生了什麼? –
我期望它執行proc並從數據庫中獲取最新值。 我相信你對XmlSerializer和只讀值是正確的。上面的代碼是我添加了XmlIgnoreAttribute的最新代碼;我曾經有一個簡單的設置塊{} –
它爲什麼會這樣做?反序列化器並不都對getter(除了列表等)感興趣 - 即使它運行(它不應該),因爲它不會在任何地方存儲任何東西...... *你會怎麼知道?* –