Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.0k views
Welcome To Ask or Share your Answers For Others

1 Answer

等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...