xamarin.forms - 来自 Android 后台服务的 Prism DI 容器

标签 xamarin.forms xamarin.android prism

我的应用程序有一个可以独立于主应用程序 (HostApduService) 运行的后台服务。

如何从此后台服务访问/使用 Prism 的 IContainer?

我知道 IContainer 可从 Xamarin.Forms.Application.Current 获得,请参阅:

https://tutel.me/c/programming/questions/45097342/implement+dependency+injection+in+background+services+in+xamarin+forms+using+prism

但是,在我的情况下,如果服务在没有启动应用程序本身的情况下运行,则应用程序可能不存在。

最佳答案

如果 App.Current 为空,您有几个选项。

1) 在你的后台服务中初始化应用程序的一个新实例:

var app = new App();
app.Container.Resolve<IMyService>();

2) 使用辅助方法只注册您想要的内容并创建后台服务所需的容器:

public class App : PrismApplication
{
    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        RegisterBackgroundServices(containerRegistry);
    }

    public static void RegisterBackgroundServices(IContainerRegistry containerRegistry)
    {
        // Register services you need in the Background Service
    }
}

public class MyBackgroundService
{
    IContainerExtension Container { get; }
    public MyBackgroundService()
    {
        // Note: Prism has some non-default Rules in place
        Container = new DryIocContainerExtension(new Container());
        App.RegisterBackgroundServices(Container);
    }
}

关于xamarin.forms - 来自 Android 后台服务的 Prism DI 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53014936/

相关文章:

c# - 通过 Xamarin 中的新 Activity 加载时布局不显示内容

silverlight-4.0 - Prism 复合 Material 应用 - 可混合性

c# - 适用于 Windows Phone(8.1 和 10)平台的 Xamarin Forms 中的滑动手势识别器

xamarin.forms - 如何退出(或导航出)MasterDetail 页面到 Xamarin 中的简单 ContentPage。形式?

android - 在内部存储 ANDROID 上创建 SQLite 数据库

c# - Android 应用程序和 MySql 连接无法连接。打开

xamarin.forms - Xamarin Forms with Prism : Remove a page from the stack

c# - Prism ServiceLocator GetInstance 和 MEF

ios - FCM iOS - 收到新的推送通知时删除旧的推送通知磁贴

xamarin.android - 为什么在 Azure MobileServiceClient LoginAsync() 之后 Navigation.PushAsync 崩溃?