我的应用程序具有可以独立于主应用程序(HostApduService)运行的后台服务。
如何从此后台服务访问/使用Prism的IContainer?
我知道IContainer可从Xamarin.Forms.Application.Current获得,请参阅:
但是,在我的情况下,如果运行该服务时未打开应用本身,则该应用可能不存在。
答案 0 :(得分:3)
如果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);
}
}