Я хотел бы создать приложение Xamarin, которое использует шаблон внедрения зависимостей. Моя текущая проблема заключается в том, что я просто не могу заставить его работать с xamarin каким-либо иным образом, кроме как в качестве анти-шаблона локатора зависимостей, в то время как мне нужна реальная инъекция конструктора. Я перепробовал все, что смог найти, от шаблонов Prism до tinyIoC, но ViewModels и Views просто требуют конструктора без параметров. Что мне не хватает?
Ниже приведены некоторые источники, которые были полезны, но не помогли решить мою проблему.
- Xamarin DependencyService с параметризованным конструктором
- https://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/dependency-injection.
- https://github.com/windows-toolkit/MVVM-Samples
Мое приложение представляет собой свежий шаблон форм xamarin, созданный VS2019, я добавил только несколько библиотек, но они никоим образом не должны мешать. Xamarin явно предоставляет встроенный локатор зависимостей, но это не то, что я хотел использовать. Я также видел несколько шаблонов, которые достигли того, чего я хотел, но они были слишком большими, чтобы я мог понять, как именно они этого достигли.
В идеале я хотел бы использовать Microsoft MVVM Toolkit, но это не строгое требование. Я также хотел бы, чтобы реализация была максимально простой, так как я только начинаю разработку xamarin.
Пример того, чего бы я хотел добиться:
public class AboutViewModel : BaseViewModel
{
public AboutViewModel(ITest testService)
{
Title = "About";
OpenWebCommand = new Command(async () => await Browser.OpenAsync("https://aka.ms/xamarin-quickstart"));
}
public ICommand OpenWebCommand { get; }
}
public interface ITest
{
void Test();
}
class TestService : ITest
{
public void Test()
{
Debug.WriteLine("Test successful");
}
}