Silverlight是偉大的,與RIA服務解決了很多東西但是。我們爲什麼不得不得到;在每個模型上設置?Silverlight,RIA服務和保護我們的數據在對象
我已經瞭解到,如果我們有一個客戶,並且客戶ID不應該改變,那麼Id屬性應該是隻讀的,如果客戶有一個密碼需要經過一些邏輯之後才能設置屬性應該是隻讀的,所以沒有人可以用錯誤的方式使用我的對象。
而我們應該幾乎永遠不會允許的最大的事情之一;例如invoice.Rows上的集合,因爲它可能會創建難以找到的bug。也許我想阻止invoice.Rows.Add(通過打破Demeter原則法)方法,因爲我想在方法invoice.AddRow(row)中執行一些檢查。在添加行之前。
有時候我們想在服務器端解決這個問題,例如,在服務器添加發票時通過服務發送行,但有時候我們想在客戶端生成整個發票然後發送它。我不想問服務嘿,我剛剛添加了這一行,我可以得到重新計算的總價格與增值稅和沒有增值稅等。
我是唯一一個感到迷茫,或者我的目標和目標錯誤的人,我們不應該用面向對象思想的silverlight嗎?
是的,我們需要setter,因爲在SL4中缺少序列化能力。這可以很容易地用.NET解決,那裏的序列化屬性是可用的並且可以得到;設置私有字段 那麼要設置Id,一個不應該改變的新實體的字段,那麼使用構造函數是一個很好的解決方案。 對於價格等的重新估計,我們當然希望稍後在服務器端使用相同的邏輯,這將是我認爲屬於域模型的ViewModel中的業務邏輯。但是在寫入時可能錯過了某些內容我不需要複製它。 – NPehrsson 2010-01-28 11:13:38