IDataService в наборе инструментов MVVM-Light, бета-версия V4 - PullRequest
2 голосов
/ 11 октября 2011

Я изучаю Silverlight для WP7 и наткнулся на инструментарий MVVM Light. Я подумал, что это будет хорошая идея, чтобы изучить новейшую вещь, поэтому я установил V4 Beta. К сожалению, нет никакой документации к нему (пока?). В папке модели есть 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 содержит только строку (или она должна быть используется в качестве базового класса?).

Ответы [ 2 ]

4 голосов
/ 11 октября 2011

Я успешно использовал IDataService для проверки и проверки данных. Код, который у вас есть, является примером того, как вы должны его использовать. DataItem является примером «Entity» или «DTO (Data Transfer Object)», который представляет данные из базы данных или службы. Если вы используете 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();
0 голосов
/ 07 января 2012

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

Лоран объясняет это в своем видео Понимание паттерна Model-View-ViewModel

и здесь DEEP DIVE MVVM на # MIX11

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

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

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

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

...