gpt4 book ai didi

c# - Xamarin.Forms 的属性注入(inject)(setter 注入(inject)) Prism

转载 作者:行者123 更新时间:2023-12-05 07:49:06 25 4
gpt4 key购买 nike

Xamarin.forms 是否支持 setter 注入(inject)?

我在 Bootstrap 中注入(inject)了这样的服务

Container.RegisterType<ICommonService, CommonService>();

在 View 模型中,我想将一个实例注入(inject)到这样的属性中

[Dependency]
public ICommonService CommonService { get; set; }

但是在运行时,属性 CommonService 始终为 null。

我使用的属性是 Microsoft.Practices.Unity.DependencyAttribute,而不是 Xamarin.Forms.DependencyAttribute

如果我在构造函数中注入(inject),它会起作用

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 注入(inject)功能,我认为我们应该手动注册它。 (您的代码片段应该有效)

看:https://brianlagunas.com/whats-new-in-prism-for-xamarin-forms-7-0/

BrianLagunas Prism 7.0 changes

关于c# - Xamarin.Forms 的属性注入(inject)(setter 注入(inject)) Prism ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37853191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com