繁体   English   中英

Xamarin.Forms 的属性注入(setter 注入)Prism

[英]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/

BrianLagunas Prism 7.0 变化

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM