2017-09-14 1 views
0

Im Versuch, einen Android-und iOS-spezifischen Dienst zu injizieren, aber auf Android bekomme ich einen Fehler in App.xaml.cs darüber nicht in der Lage, den Parameter für LoginServiceXamarin.Forms Prism: Android Abhängigkeit Injektion von plattformspezifischen Service

zu lösen

Mein App.xaml.cs:

protected override void RegisterTypes() 
    { 
     Container.RegisterTypeForNavigation<NavigationPage>(); 
     Container.RegisterTypeForNavigation<MainPage>(); 
     Container.RegisterTypeForNavigation<MapsPage>(); 


     Container.RegisterInstance<ILoginService>(new LoginService(Container.Resolve<IClsDkwsService>())); 
    } 

Mein 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()); 
    } 
} 

Es sieht lik e AndroidInitializer.RegisterTypes() heißt nachApp.RegisterTypes(). Ich möchte vermeiden, LoginService in jeder Plattform zu registrieren. Wie stelle ich sicher, dass alle plattformspezifischen Dienste in App.xaml.cs registriert sind?

+0

in Unity registrieren. Warum akzeptiert Ihr LoginService den Konstruktor IClsDkwsService nicht? Warum nimmt man die Implementierung davon? Das ist eine Art Verletzung der Dependence, meinst du nicht? – BraveHeart

+0

Ich möchte sie als Singletons registrieren. Wie sonst kann ich es tun? – user1202032

Antwort

2

Anstatt zu versuchen, Instanzen dieser Abhängigkeiten manuell zu erstellen, verwenden Sie die Funktionen des DI-Containers. Sie können einen Typ in Unity unter Verwendung von

Verwandte Themen