powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / обертка модели данных в MVVM для автосгенерированных типов
10 сообщений из 10, страница 1 из 1
обертка модели данных в MVVM для автосгенерированных типов
    #37330472
teepok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

При разработке используется подход MVVM(Model-View-ViewModel).
В качестве модели данных волне можно было бы использовать классы, автосгенерированные с помощью утилиты SlSvcUtil.exe из wsdl и xsd сервиса, но... Вся проблема в том, что сгенерированный код выглядит примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class ProxyClass
{
  private string firstName;
  public string FirstName
  {
    get { return firstName;}
    set
    {
       firstname = value;
       RaisePropertyChanged("FirstName");
    }
  }
}

Так вот, в таком автосгенерированном коде мне очень не хватает одной строки - вызова в сеттере в самом начале валидатора свойства. И мне нужно чтобы вызов валидирования делался именно в сеттере, а не как то там еще как раз по причине применения подхода MVVM.
Так как влиять на автогенерируемый код я не могу, то на ум приходит только одно решение, написать прослойку из собственного класса, который в get/set выдавал/устанавливал бы не свои приватные поля, а значения моего автосгенерированного класса.:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
class MyClass
{
  //ссылка на экземпляр класса прокси
  private ProxyClass _myProxyClass;
  public ProxyClass _myProxyClass {get;set}
  
  
  public string FirstName
  {
    get { return _myProxyClass.FirstName;}
    set
    {
       ValidateProperty("FirstName");
       _myProxyClass.FirstName = value;
       RaisePropertyChanged("FirstName");
    }
  }
}

Может как-то можно решить мою проблему проще? Поделитесь опытом. Вообще, когда в качестве модели данных в MVVM всегда можно рассматривать автосгенерированные классы, для каких целей и в каких ситуациях Вы пишете свои собственные классы для Model?

Спасибо.
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37330704
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teepok,

гляньте сюда
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37341327
Фотография NetFantom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа,

Интересно, но не решает вопрос автора.
У меня есть, кстати, схожий вопрос, только в аспекте MVVM и EntityFramework
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37342413
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValidationRule
IDataErrorInfo
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37370460
teepok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NetFantomуТКа,

Интересно, но не решает вопрос автора.
У меня есть, кстати, схожий вопрос, только в аспекте MVVM и EntityFramework
Согласен, это немного не то чего я хотел.
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37370473
teepok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КValidationRule
IDataErrorInfo

Не могли бы подробнее, как это можно применить для решении моего вопроса, т.е. без ручного вмешательства в автосгенерированный код прокси?
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37371994
Валдиш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот неплохое решение http://datumnode.com
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37371997
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teepokДобрый день.

При разработке используется подход MVVM(Model-View-ViewModel).
В качестве модели данных волне можно было бы использовать классы, автосгенерированные с помощью утилиты SlSvcUtil.exe из wsdl и xsd сервиса, но...
Так как влиять на автогенерируемый код я не могу, то на ум приходит только одно решение, написать прослойку из собственного класса, который в get/set выдавал/устанавливал бы не свои приватные поля, а значения моего автосгенерированного класса.:

Есть совсем другое решение - кодогенераторы. Студия содержит встроенный, для ЕF есть готовые шаблоны, которые можно настраивать под себя. Помимо этого полно сторонних кодогенераторов(один из самых мощных - CodeSmith). При таком подходе можно получить на выходе все, что угодно и даже готовое приложения:
классы для бизнес-объектов и сервисов; формы, еtc
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37372144
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teepokАлексей КValidationRule
IDataErrorInfo
Не могли бы подробнее, как это можно применить для решении моего вопроса, т.е. без ручного вмешательства в автосгенерированный код прокси?

teepokИ мне нужно чтобы вызов валидирования делался именно в сеттере, а не как то там еще как раз по причине применения подхода MVVM.
Странное утверждение. Надо отказаться от него как можно скорее.

Далее, если хочется валидации во ViewModel - делаете partial class, в нём реализация IDataErrorInfo.

Если хочется валидации во View - используете ValidationRule.
...
Рейтинг: 0 / 0
обертка модели данных в MVVM для автосгенерированных типов
    #37372151
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVateepok... В качестве модели данных волне можно было бы использовать классы, автосгенерированные с помощью утилиты SlSvcUtil.exe из wsdl и xsd сервиса ...
Есть совсем другое решение - кодогенераторы. Студия содержит встроенный, для ЕF есть готовые шаблоны, которые можно настраивать под себя. Помимо этого полно сторонних кодогенераторов(один из самых мощных - CodeSmith). При таком подходе можно получить на выходе все, что угодно и даже готовое приложения:
классы для бизнес-объектов и сервисов; формы, еtcА SvcUtil.exe не кодогенератор?! Если его вызов завернуть для удобства в T4 - так вообще красота...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / обертка модели данных в MVVM для автосгенерированных типов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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