Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k 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 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...