【发布时间】:2020-10-28 08:10:30
【问题描述】:
我是UNO Platform 的新手,我正在尝试使用这个框架开发我的第一个应用程序。我也想使用 DI 工具包,所以我选择了应该与这个平台兼容的Microsoft.Extensions.DependencyInjection。
顺便说一句,我无法理解如何将依赖项注入到我的 ViewModel 中。 我把这个帖子红了: How can I use Microsoft.Extensions.DependencyInjection in an .NET Core console app? 这是我的做法:
App.xaml.cs:
public App()
{
ConfigureFilters(global::Uno.Extensions.LogExtensionPoint.AmbientLoggerFactory);
var services = new ServiceCollection()
.AddSingleton<IMessageBroker, MessageBroker>();
var serviceProvider = services.BuildServiceProvider();
this.InitializeComponent();
this.Suspending += OnSuspending;
}
IMessageBroker 和 MessageBroker 是我想用 DI 处理的类的接口和实现。
然后在我的 ViewModel 上做:
MainPageViewModel.cs
public MainPageViewModel(IMessageBroker broker)
{
// some code
}
到目前为止,一切都很好。
对于 MVVM 工具包,我选择了MVVM helpers。 如果我理解正确的话,这个 MVVM 工具包没有提供任何将 View 附加到 ViewModel 的约定,所以我应该手动完成:
MainPage.xaml.cs
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
// How can I get a reference to ServiceProvider for calling GetService
var broker = serviceProvider.GetService<IMessageBroker>()
this.DataContext = new MainPageViewModel(broker);
}
}
我如何在此处获得对ServiceProvider 的引用以调用GetService<IMessageBroker>()?
任何提示将不胜感激。
【问题讨论】:
标签: c# mvvm dependency-injection uno-platform