Сеттер вызывается перед конструктором - PullRequest
2 голосов
/ 02 марта 2010

Я отлаживаю код, и происходит одна странная вещь. Есть строковое свойство, скажем, MyProperty. Когда я добавляю точку останова в установщик свойства и в конструктор по умолчанию (единственный конструктор), метод вызывается первым. Я не знаю, что происходит на другом уровне кода, но мне это кажется странным в любом случае. Все участники не статичны. Класс имеет атрибут [DataContract], а членами являются [DataMember]. Кто-нибудь может объяснить это?

Я не могу поделиться больше кодом, чем этот. Также код находится в проекте Silverlight.

1 Ответ

5 голосов
/ 02 марта 2010

Это во время десериализации WCF? В десериализации WCF конструктор вообще не вызывается. Это по замыслу. Объекты WCF предназначены для передачи данных, и любая логика, которая находится за сеттерами и геттерами, в лучшем случае опасна. Скорее всего, вы наблюдаете это поведение и беспокоитесь о нем, потому что в бизнес-логике есть что-то, что находится в установщике. Чтобы обойти это, я бы предложил украшать только автоматические свойства и поля атрибутом [DataMember], что предотвратит срабатывание любой другой логики. Кроме того, будьте осторожны с любой логикой, которая будет выполняться в конструкторе, эта логика не будет выполняться во время десериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...