Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF, генерация классов на клиенте / 14 сообщений из 14, страница 1 из 1
11.09.2018, 16:14
    #39700985
yabs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
всем здравствуйте
на сервере есть класс
Код: c#
1.
2.
3.
4.
5.
6.
[DataContract]
public class DataTransferClass
{
    [DataMember]
    public string Status { get; set; }
}


когда в студии делаешь "Create Service reference", на клиенте создается
такое
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
private string StatusField;

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


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

Как заставить WCF генерировать Equals вместо ReferenceEquals?
...
Рейтинг: 0 / 0
11.09.2018, 17:25
    #39701015
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
yabs,
Я бы не мешал все в одну кучу.
Прокси классы генерируемые служать исключительно чтобы передать данные через сеть и геерогенную среду.
Т.е. полученные данные залить в Модель по стандарту MVVP например.
А там уже твои события.
Кроме того, прокси классы могут быть в Африке и менятся другой информационной системой.
Это объекты сервиса сервера.
Нельзя привязывать к ГУИ.
...
Рейтинг: 0 / 0
12.09.2018, 10:33
    #39701302
yabs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
Petro123,

толика смысла в твоих словах конечно есть
но прокси-классы генерируются тут же у меня на коленке ))
...
Рейтинг: 0 / 0
12.09.2018, 10:42
    #39701314
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
yabsно прокси-классы генерируются тут же у меня на коленке ))но забирается описание из Африки).
Прокси служит чтобы передать инфу.
Всё.
Я вообще не понял нафига там события генерируются.
...
Рейтинг: 0 / 0
12.09.2018, 12:33
    #39701394
yabs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
Petro123,

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

события, я так понимаю, как раз для WPF и создаются
...
Рейтинг: 0 / 0
12.09.2018, 12:52
    #39701407
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
yabsPetro123,

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

события, я так понимаю, как раз для WPF и создаются
И у меня тоже мой. Только у меня в сети, а не там гле клиент.
...
Вот упрямый. У тебя модель это прокси классы?
Ну и делай. Зачем тебя уговаривать.
...
Рейтинг: 0 / 0
01.10.2018, 16:50
    #39711080
Renziglov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
yabs,
Если речь идет о байндинге, то сгенерировано все верно. Для справки, такую генерацию дает ключ /edb для SLSvcUtil.exe и другого ключа просто нет (автоматическое генерирование прокси основано ни на чем, кроме как SLSvcUtil.exe ).
WPF прибайндивает к экземпляру класса, а не к его содержимому. Строка - иммютэбл обьект и основываясь только на содержимом строки, вы потеряете байндинг, когда строка та же самая, но экземпляры строки разные.

Пересмотрите свою бизнес логику с учетом этого - это единственно, что можно сделать с моей точки зрения.
Например, прибандивайте к другому члену класса, используя ковертер, а в конвертере анализируйте данную строку.
Или на клиенте расширте класс новым членои класса с аналогичным подходом. Как-то так.
...
Рейтинг: 0 / 0
01.10.2018, 17:31
    #39711109
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
RenziglovПересмотрите свою бизнес логику с учетом этого - это единственно, что можно сделать с моей точки зрения.
Например, прибандивайте к другому члену класса, используя ковертер, а в конвертере анализируйте данную строку.
Или на клиенте расширте класс новым членои класса с аналогичным подходом. Как-то так.
другими словами - не надо делать биндинг к прокси классам АвтоГенерируемым на клиенте.
Я так понял ваши слова.
...
Рейтинг: 0 / 0
01.10.2018, 18:04
    #39711161
Renziglov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
Petro123,
>Я так понял ваши слова.
Вы неправильно поняли мои слова.

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

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

Микрософт делает правильно, что проверяет объект, а не значение. Лучше перебдеть, чем недобдеть и пропустить событие.
Под это и надо подстраиваться.
...
Рейтинг: 0 / 0
01.10.2018, 18:40
    #39711191
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
RenziglovВы неправильно поняли мои слова.тут смешан вопрос:
"Метод - равенество классов на значении а не по ссылке Value Equality"
и
"Правильная работа со сгенерированными классами"
ТСкогда в студии делаешь "Create Service reference", на клиенте создается
такое
моё мнение что пусть в своих классах делает событие хоть по указателю-ссылке, хоть по значению(набор букв).
Зависит от бизнес логики.
А вот по поводу прокси классов(вы промолчали про них) я сказал что пусть их не трогает.
Ну или "ваше" - конвертер оттуда данных в свою Модель и свои классы.
Т.е. класс А прокси и пусть делает класс Б, но уже свой клиентский.
А там, как хочет. Хоть переопределяет Equals.
IMHO
...
Рейтинг: 0 / 0
01.10.2018, 19:47
    #39711229
Renziglov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
Petro123,

>Хоть переопределяет Equals.
Он ничего не может переопределить. При следующем обновлении ссылок на клиентской стороне все его переопределения исчезнут.
В загловках этих автоматически сгенерированных файлов так прямо об этом и говорится.
...
Рейтинг: 0 / 0
01.10.2018, 22:00
    #39711308
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
RenziglovPetro123,

>Хоть переопределяет Equals.
Он ничего не может переопределить. При следующем обновлении ссылок на клиентской стороне все его переопределения исчезнут.
В загловках этих автоматически сгенерированных файлов так прямо об этом и говорится.я тебе три раза об этом сказал. Переопределить на своем классе и не трогать прокси класс.
Тот что обновляется при обновлении ссылки называется прокси класс.
...
Рейтинг: 0 / 0
01.12.2018, 09:46
    #39741362
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
Petro123yabs,
Я бы не мешал все в одну кучу.
Прокси классы генерируемые служать исключительно чтобы передать данные через сеть и геерогенную среду.
Т.е. полученные данные залить в Модель по стандарту MVVP например.
А там уже твои события.
Кроме того, прокси классы могут быть в Африке и менятся другой информационной системой.
Это объекты сервиса сервера.
Нельзя привязывать к ГУИ.

"геерогенную среда" - Пётр123, ты становишься опасным
...
Рейтинг: 0 / 0
01.12.2018, 10:44
    #39741380
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF, генерация классов на клиенте
Ролг Хупин,

))) моя Т9 на сотовом окапечаталась по Фрейду)
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF, генерация классов на клиенте / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]