I have seen this example:
public static class Startup
{
public static IServiceProvider ServiceProvider { get; set; }
public static IServiceProvider Init()
{
var serviceProvider =
new ServiceCollection()
.ConfigureServices()
.BuildServiceProvider();
ServiceProvider = serviceProvider;
return serviceProvider;
}
}
public static IServiceCollection ConfigureServices(this IServiceCollection services)
{
services.AddTransient<SampleViewModel>();
return services;
}
public App()
{
InitializeComponent();
Startup.Init();
MainPage = new MainPage();
}
public MyPage()
{
InitializeComponent();
BindingContext = Startup.ServiceProvider.GetService<SampleViewModel>();
}
This was an example I found on the internet.
My question is, why not just do this and directly specify a new class:
public MyPage()
{
InitializeComponent();
BindingContext = _vm = new SampleViewModel();
}
In this example, what's the advantage in using DI? For those people with apps that have many screens and view models, are you using this type of DI to get the view models and if so why?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…