在学习 MVVM 时,我在 Microsoft Virtual Academy 看到了一个在线课程,Ben Riga 在下面编写了代码。我想知道的是以下问题:
使用名为 IDataService 的接口有什么好处?在模型类的方法或视图模型类中获取数据会导致代码更少。一定有一些我无法弄清楚的未来好处。有人可以为我解释一下吗?
模型:
public class CommonDataItem
{
public DataItem(string uid)
{
Uid = uid;
}
public string Uid
{
get;
private set;
}
// Other properties ...
}
public interface IDataService
{
void GetItem(Action<CommonDataItem> callback,
string uid);
}
public class DataService : IDataService
{
public void GetItem(Action<CommonDataItem>
callback, string uid)
{
// Retrieve the data from the actual source
// ...
var item = new DataItem(...);
callback(item);
}
}
视图模型:
public class MainViewModel : ViewModelBase
{
private readonly IDataService _dataService;
public const string Title_PropertyName = "Title";
private string _title = string.Empty;
public string Title
{
get { return _title; }
set
{
if (_title == value)
return;
_title = value;
RaisePropertyChanged(Title_PropertyName);
}
}
// Constructor...
public MainViewModel(IDataService dataService)
{
_dataService = dataService;
_dataService.GetData(
(item) =>
{
Title = item.Title;
});
}
}