Я пытаюсь сделать приложение cross-plattform, которое будет работать для Xamarin.Forms и WPF (например: https://github.com/C0D3Name/XamFormsWpf) в сочетании с подсветкой MVVM.MVVM Light для Xamarin Forms и WPF
MVVM Light для меня совсем новый, и я не нашел четкого учебника для того, что я хочу сделать. На Xamarin.Forms внедрение зависимости производится
SQLiteConnection database = DependencyService.Get<ISQLite>().GetConnection("db.sqlite");
Как это делается в MVVM свете? Должен ли я передавать различные реализации plattform ISQLite
в качестве параметра?
Я уже создал ViewModelLocator
в моем PCL:
public class ViewModelLocator
{
/// <summary>
/// Register all the used ViewModels, Services et. al. witht the IoC Container
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainViewModel>();
// My DataService is using the connection from ISQlite
SimpleIoc.Default.Register<IDataService, DataService>();
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
}
public interface ISQLite
{
SQLiteConnection GetConnection(string sqliteFilename);
}
Насколько я понял SimpleIoc
, я должен зарегистрировать интерфейс к конкретной реализации, но как мой DataService знать о правильном ISQLite
реализации ?
Надеюсь, мой вопрос понятен.