IDataService в MVVM-Light toolkit V4 Beta

#wpf #silverlight #windows-phone-7 #mvvm #mvvm-light

#wpf #silverlight #windows-phone-7 #mvvm #mvvm-light

Вопрос:

Я изучаю Silverlight для WP7 и наткнулся на MVVM Light toolkit. Я подумал, что было бы неплохо изучить самое новое, поэтому я установил бета-версию V4. К сожалению, к нему нет никакой документации (пока?). В папке модели находятся 3 файла: DataItem, DataService и IDataService.

 public class DataItem
{
    public DataItem(string title)
    {
        Title = title;
    }

    public string Title { get; private set; }
}

public class DataService : IDataService
{
    public void GetData(Action<DataItem, Exception> callback)
    {
        // Use this to connect to the actual data service

        var item = new DataItem("Welcome to MVVM Light");
        callback(item, null);
    }
}

public interface IDataService
{
    void GetData(Action<DataItem, Exception> callback);
}
  

Эти классы используются MainViewModel для получения значения свойства.
Теперь к вопросу: являются ли эти классы, которые вы должны использовать (в частности, IDataService)?Кажется, я не могу найти способ их эффективного использования, потому что DataItem содержит только строку (или она предназначена для использования в качестве базового класса?).

Ответ №1:

Я успешно использовал IDataService для обеспечения тестирования и фиктивного перехвата данных. Код, который у вас есть, является примером того, как вы должны его использовать. Элемент данных является примером «Сущности» или «DTO (объект передачи данных)», который представляет данные из базы данных или службы. Если вы используете WCF, это будет объект, который создается при выполнении «Добавить ссылку на службу». Класс DataService является представлением интерфейса. Этот класс DataService будет иметь методы для вызова реального веб-сервиса и выполнения действий CRUD. У вас также может быть DesignTimeDataService: IDataService, который имеет те же методы, но создает данные с использованием foreach в памяти. Затем вы можете использовать IoC или другое внедрение зависимостей для внедрения реализации во время выполнения.

В моем App.xaml.cs в Silverlight я создаю IDataService и использую его во всем своем приложении:

 IDataService ds = ViewModelBase.IsDesignTimeStatic // from the MVVMLight toolkit
? (IDataService) new DesignTimeDataService()
: (IDataService) new DataService();
  

Комментарии:

1. Рад, что смог помочь. Не беспокойтесь об этом, так мы учимся.

Ответ №2:

Структура, представленная в MVVM Light, а также пример, продуманы с вашим приложением, подключающимся к сервису.

Лоран объясняет это в своем видео, в котором описывается шаблон Model-View-ViewModel

и здесь ГЛУБОКОЕ ПОГРУЖЕНИЕ в MVVM на # MIX11

существует очень хорошее объяснение модели.

Что я сделал, так это заменил DataService моими библиотеками onw для доступа к режиму REST через асинхронный HttpRequest. Из-за характера асинхронной связи я решил не использовать обратный вызов (), поэтому я удалил его, но использовал сообщения для отправки данных обратно через полезную нагрузку сообщения.

В моем понимании вы должны использовать эти классы, поскольку ViewModels инициализируются параметром IDataService в качестве параметра, и я не нашел никакого способа его изменить.

Надеюсь, это поможет.