У нас есть несколько объектов домена, которые должны поддерживать режимы только для чтения и чтения-записи; они в настоящее время имеют свойство bool Locked
для этого - когда Locked
пытается изменить свойства объекта, результат InvalidOperationException
. Состояние по умолчанию для объектов - Locked.C# 3.0 Инициализация объекта - есть ли уведомление о том, что объект инициализируется?
Синтаксис инициализации объекта C# 3 вводит небольшую проблему с этим, поскольку объект должен быть разблокирован (или по умолчанию разблокирован) во время инициализации и затем принудительно заблокирован в конце.
При использовании синтаксиса инициализации объекта C# 3 есть средство получения уведомления о том, что объект инициализирован или завершена инициализация? System.ComponentModel.ISupportInitialize
была моей лучшей надеждой, но она не называется.
Это не то, на что я надеялся, - но решает проблему, которую в противном случае я должен был бы быть осторожным с порядком установки свойств (предполагая isFrozen is expo sed по свойству). var obj = new DomObj() {Frozen = true, Id = 5}; // выдает исключение, так как Frozen был установлен до Id. – STW
Он также избегает боли при наличии настраиваемого свойства, которое, как представляется, размораживает (/ оттаивает) объект - поэтому я предпочитаю метод типа Freeze() ', а не свойство. –