我們有幾個需要同時支持只讀和讀寫模式的域對象;他們目前有一個3210屬性 - 當Locked
試圖改變對象的屬性導致InvalidOperationException
。對象的默認狀態是鎖定。C#3.0對象啓動 - 是否有通知說對象正在被初始化?
C#3的對象初始化語法引入了一個小問題,因爲對象在初始化過程中必須解鎖(或默認爲解鎖),然後在最後鎖定。
當使用C#3的對象初始化語法時,是否存在接收對象正在初始化或初始化完成的通知的方法? System.ComponentModel.ISupportInitialize
是我最大的希望,但它並沒有被調用。
這不是我所希望的 - 但是解決了這個問題,否則我將不得不小心設置屬性的順序(假設isFrozen是expo sed的財產)。 var obj = new DomObj(){Frozen = true,Id = 5}; //由於在Id之前設置了Frozen,所以會引發異常。 – STW 2009-10-13 21:14:47
它也避免了讓一個可設置屬性看起來解凍(/解凍)對象的痛苦 - 所以我更喜歡像Freeze()這樣的方法而不是屬性。 – 2009-10-13 21:20:48