Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WCF, Web Services, Remoting Новый топик    Ответить
 WCF, генерация классов на клиенте  [new]
yabs
Member

Откуда: 86-78-MEK-L-TR-WI-N
Сообщений: 1362
всем здравствуйте
на сервере есть класс
[DataContract]
public class DataTransferClass
{
    [DataMember]
    public string Status { get; set; }
}

когда в студии делаешь "Create Service reference", на клиенте создается
такое
private string StatusField;

public string Status 
{
   get 
   {
      return this.StatusField;
   }
   set 
   {
      if ((object.[b]ReferenceEquals[/b](this.StatusField, value) != true)) 
      {
         this.StatusField = value;
         this.RaisePropertyChanged("Status");
      }
   }
}

Этот Status я привязываю к TextBox'у в WPF и хотел бы реагировать на изменения его значения.
Моя проблема, что метод propertyChanged вызывается даже тогда, когда Status остался неизвменным, т.к. поменялась ссылка.

Как заставить WCF генерировать Equals вместо ReferenceEquals?
11 сен 18, 16:14    [21671166]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
yabs,
Я бы не мешал все в одну кучу.
Прокси классы генерируемые служать исключительно чтобы передать данные через сеть и геерогенную среду.
Т.е. полученные данные залить в Модель по стандарту MVVP например.
А там уже твои события.
Кроме того, прокси классы могут быть в Африке и менятся другой информационной системой.
Это объекты сервиса сервера.
Нельзя привязывать к ГУИ.
11 сен 18, 17:25    [21671252]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
yabs
Member

Откуда: 86-78-MEK-L-TR-WI-N
Сообщений: 1362
Petro123,

толика смысла в твоих словах конечно есть
но прокси-классы генерируются тут же у меня на коленке ))
12 сен 18, 10:33    [21671804]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
yabs
но прокси-классы генерируются тут же у меня на коленке ))
но забирается описание из Африки).
Прокси служит чтобы передать инфу.
Всё.
Я вообще не понял нафига там события генерируются.
12 сен 18, 10:42    [21671818]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
yabs
Member

Откуда: 86-78-MEK-L-TR-WI-N
Сообщений: 1362
Petro123,

да никакой не из Африки. WCF-сервис мой же.

события, я так понимаю, как раз для WPF и создаются
12 сен 18, 12:33    [21671982]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
yabs
Petro123,

да никакой не из Африки. WCF-сервис мой же.

события, я так понимаю, как раз для WPF и создаются

И у меня тоже мой. Только у меня в сети, а не там гле клиент.
...
Вот упрямый. У тебя модель это прокси классы?
Ну и делай. Зачем тебя уговаривать.
12 сен 18, 12:52    [21672004]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Renziglov
Member

Откуда:
Сообщений: 60
yabs,
Если речь идет о байндинге, то сгенерировано все верно. Для справки, такую генерацию дает ключ /edb для SLSvcUtil.exe и другого ключа просто нет (автоматическое генерирование прокси основано ни на чем, кроме как SLSvcUtil.exe ).
WPF прибайндивает к экземпляру класса, а не к его содержимому. Строка - иммютэбл обьект и основываясь только на содержимом строки, вы потеряете байндинг, когда строка та же самая, но экземпляры строки разные.

Пересмотрите свою бизнес логику с учетом этого - это единственно, что можно сделать с моей точки зрения.
Например, прибандивайте к другому члену класса, используя ковертер, а в конвертере анализируйте данную строку.
Или на клиенте расширте класс новым членои класса с аналогичным подходом. Как-то так.
1 окт 18, 16:50    [21691573]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
Renziglov
Пересмотрите свою бизнес логику с учетом этого - это единственно, что можно сделать с моей точки зрения.
Например, прибандивайте к другому члену класса, используя ковертер, а в конвертере анализируйте данную строку.
Или на клиенте расширте класс новым членои класса с аналогичным подходом. Как-то так.

другими словами - не надо делать биндинг к прокси классам АвтоГенерируемым на клиенте.
Я так понял ваши слова.
1 окт 18, 17:31    [21691629]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Renziglov
Member

Откуда:
Сообщений: 60
Petro123,
>Я так понял ваши слова.
Вы неправильно поняли мои слова.

Речь идет о строке. Если вы присваиваете строке "сон", сгенерированный тригер срабатывает. Строка изменилась. Затем вы присваиваете "слон": сгенерированный тригер срабатывает. Строка изменилась. Если вы опять присвоите "слон" той же строке, тригер может сработать, а может и нет, все зависит от контекста. Например,
s+=''; вызовет срабатывание, поскольку будет создана новая трока в памяти с тем же значением. А
s=String.Concat(s, ''); не вызовет.

Yabs хочет, чтоб ничего не срабатывало, ведь он опирается только на значение строки (значение то же), а не на обьект, который ее хранит (объект другой).

Микрософт делает правильно, что проверяет объект, а не значение. Лучше перебдеть, чем недобдеть и пропустить событие.
Под это и надо подстраиваться.
1 окт 18, 18:04    [21691691]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
Renziglov
Вы неправильно поняли мои слова.
тут смешан вопрос:
"Метод - равенество классов на значении а не по ссылке Value Equality"
и
"Правильная работа со сгенерированными классами"
ТС
когда в студии делаешь "Create Service reference", на клиенте создается
такое

моё мнение что пусть в своих классах делает событие хоть по указателю-ссылке, хоть по значению(набор букв).
Зависит от бизнес логики.
А вот по поводу прокси классов(вы промолчали про них) я сказал что пусть их не трогает.
Ну или "ваше" - конвертер оттуда данных в свою Модель и свои классы.
Т.е. класс А прокси и пусть делает класс Б, но уже свой клиентский.
А там, как хочет. Хоть переопределяет Equals.
IMHO
1 окт 18, 18:40    [21691733]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Renziglov
Member

Откуда:
Сообщений: 60
Petro123,

>Хоть переопределяет Equals.
Он ничего не может переопределить. При следующем обновлении ссылок на клиентской стороне все его переопределения исчезнут.
В загловках этих автоматически сгенерированных файлов так прямо об этом и говорится.
1 окт 18, 19:47    [21691802]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
Renziglov
Petro123,

>Хоть переопределяет Equals.
Он ничего не может переопределить. При следующем обновлении ссылок на клиентской стороне все его переопределения исчезнут.
В загловках этих автоматически сгенерированных файлов так прямо об этом и говорится.
я тебе три раза об этом сказал. Переопределить на своем классе и не трогать прокси класс.
Тот что обновляется при обновлении ссылки называется прокси класс.
1 окт 18, 22:00    [21691929]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2257
Petro123
yabs,
Я бы не мешал все в одну кучу.
Прокси классы генерируемые служать исключительно чтобы передать данные через сеть и геерогенную среду.
Т.е. полученные данные залить в Модель по стандарту MVVP например.
А там уже твои события.
Кроме того, прокси классы могут быть в Африке и менятся другой информационной системой.
Это объекты сервиса сервера.
Нельзя привязывать к ГУИ.


"геерогенную среда" - Пётр123, ты становишься опасным
1 дек 18, 09:46    [21750911]     Ответить | Цитировать Сообщить модератору
 Re: WCF, генерация классов на клиенте  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
Ролг Хупин,

))) моя Т9 на сотовом окапечаталась по Фрейду)
1 дек 18, 10:44    [21750931]     Ответить | Цитировать Сообщить модератору
Все форумы / WCF, Web Services, Remoting Ответить