Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
858 views
in Technique[技术] by (71.8m points)

xamarin - What's the reason for using Dependency injection to get a ViewModel from a view instead of just specifying the class?

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?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...