![](/img/trans.png)
[英]Xamarin.Forms Prism: Android dependency injection of platform-specific service
[英]Property Injection (setter injection) Prism for Xamarin.Forms
Xamarin.forms 中是否支持 setter 注入?
我在引导程序中注入了这样的服务
Container.RegisterType<ICommonService, CommonService>();
在视图模型中,我想将一个实例注入到这样的属性中
[Dependency]
public ICommonService CommonService { get; set; }
但在运行时,属性 CommonService 始终为 null。
我使用的属性是 Microsoft.Practices.Unity.DependencyAttribute,而不是 Xamarin.Forms.DependencyAttribute
如果我在构造函数中注入,它就可以工作
public LandingPageViewModel(INavigationService navigationService, ICommonService commonService)
编辑:添加了代码片段
public class Bootstrapper : UnityBootstrapper
{
protected override Page CreateMainPage()
{
try
{
return Container.Resolve<Views.LandingPage>();
}
catch (Exception exception)
{
//TODO: intent to get exception info
throw;
}
}
protected override void RegisterTypes()
{
DependencyResolver.Instance.Initialize(Container);
this.RegisterViews();
this.RegisterServices();
this.RegisterSingleton();
}
private void RegisterViews()
{
Container.RegisterTypeForNavigation<LandingPage>();
Container.RegisterTypeForNavigation<Page1>();
}
private void RegisterServices()
{
Container.RegisterType<ICommonService, CommonService>();
}
private void RegisterSingleton()
{
}
}
public partial class App : Application
{
public App()
{
InitializeComponent();
var bootstrapper = new Bootstrapper();
bootstrapper.Run(this);
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
嗯,他们从 Prism 7.0 开始删除了DependencyAttribute
注入功能,我认为我们应该手动注册它。 (您的代码片段应该可以工作)
看: https : //brianlagunas.com/whats-new-in-prism-for-xamarin-forms-7-0/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.