我们有几个需要同时支持只读和读写模式的域对象;他们目前有一个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