Десериализованный атрибут в Silverlight - PullRequest
0 голосов
/ 30 апреля 2009

У меня достаточно ограниченные данные для перемещения между silverlight и службой WCF. Поэтому я создал несколько контрактов на передачу данных. Я надеялся, что смогу использовать одни и те же классы, чтобы использовать их для некоторой ограниченной проверки данных на стороне клиента, без необходимости использования дополнительных ресурсов DTO и прочего.

У меня есть контракт примерно такой:

[DataContract]
class MyObject
{
   private String _id;
   [DataMember]
   public String ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
                DoStuff();
            }
}

Теперь, когда я десериализую объект, будет запущен сеттер. Это установит закрытую переменную _id, что хорошо. Но я не хочу, чтобы DoStuff () запускался при десериализации.

Я надеялся использовать атрибуты [OnDeserializing] и [OnDeserialized]. Я мог бы определить флаг bool, который мог бы использовать для управления тем, что запускается в сеттере. Это на самом деле работает на стороне сервера, но Silverlight не имеет этих атрибутов.

Есть предложения?

1 Ответ

0 голосов
/ 30 апреля 2009

Я бы рекомендовал не перегружать использование этих классов для выполнения логики. Это ваш договор на обслуживание данных. Вы не должны касаться создаваемых прокси-классов Silverlight. Я рекомендую поместить вашу логику проверки в другие классы, которые вы вызываете после завершения десериализации. В противном случае вы можете начать получать ошибки в своем коде сериализации, когда ваши ошибки фактически находятся в ваших данных.

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