我正在编写一个跨平台的Xamarin后台应用程序,并希望使用闪亮。
我有一个服务接口和特定于平台的类的具体实现。
我确信这很简单,但我所缺少的谜团之一是如何在闪亮的DI容器中注册接口,以便使用正确的平台特定实现。
如果我这样做没有闪亮,我将在App类中拥有自己的DI容器,并从每个平台初始化该容器。使用闪亮,我似乎只有ShinyStart类,可以访问服务集合,但它不能访问具体的类。
我研究过闪亮的模块,但也无法从文档中找出它们是如何解决这个问题的。
如何从特定于平台的代码中访问闪亮的DI服务容器,以便在接口上注册正确的具体类?
问候布赖恩
发布于 2022-03-08 02:18:50
如果其他人对此感兴趣的话,我发现答案隐藏在闪亮的代码中。您必须定义一个MainApplication类并使用RegeisterPlatformServices。
public partial class MainApplication : global::Android.App.Application
{
public MainApplication(IntPtr handle, JniHandleOwnership transfer) :
base(handle, transfer) {}
public override void OnCreate()
{
this.ShinyOnCreate(new global::ElevateNfc.ShinyStartup
{
RegisterPlatformServices = services =>
{
services.AddSingleton<IManager, Manager>();
}
});
global::Xamarin.Essentials.Platform.Init(this);
base.OnCreate();
}
}https://stackoverflow.com/questions/71388762
复制相似问题