【发布时间】:2017-09-15 01:53:45
【问题描述】:
我正在尝试注入特定于 Android 和 iOS 的服务,但在 Android 上,App.xaml.cs 出现错误,提示它无法解析 LoginService 的参数
我的App.xaml.cs:
protected override void RegisterTypes()
{
Container.RegisterTypeForNavigation<NavigationPage>();
Container.RegisterTypeForNavigation<MainPage>();
Container.RegisterTypeForNavigation<MapsPage>();
Container.RegisterInstance<ILoginService>(new LoginService(Container.Resolve<IClsDkwsService>()));
}
我的MainActivity.cs:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.tabs;
ToolbarResource = Resource.Layout.toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App(new AndroidInitializer()));
}
}
public class AndroidInitializer : IPlatformInitializer
{
public void RegisterTypes(IUnityContainer container)
{
container.RegisterInstance<IClsCryptoService>(new Cls_crypto());
container.RegisterInstance<IClsDkwsService>(new Cls_dkws());
}
}
看起来AndroidInitializer.RegisterTypes() 被称为之后 App.RegisterTypes()。我想避免在每个平台上注册LoginService。如何确保所有特定于平台的服务都在App.xaml.cs 中注册?
【问题讨论】:
-
为什么你的 LoginService 不接受构造函数 IClsDkwsService ?为什么要执行呢。这有点违反依赖注入,你不觉得吗?
-
我想将它们注册为单身人士。我还能怎么做?
标签: c# xamarin xamarin.forms xamarin.android prism