Ich habe die neueste Xamarin Alpha installiert und kann nicht UWP und DependencyService arbeiten.Xamarin.Forms DependencyService Get() Methode gibt Null in PCL zurück
Im UWP Projekt habe ich:
Forms.Init(e);
// For release version, doc said debug will do this itself
DependencyService.Register<SpecialInterface>();
IInterface1 iinterface1 = DependencyService.Get<IInterface1>();
Diese die Schnittstelle Zeiger findet.
In einem PCL ich habe:
IInterface1 iinterface1 = DependencyService.Get<IInterface1>();
In einem View-Modell in der PCL enthält (nach einem Button-Klick) ist es nicht einen null
Wert für den Get<IInterface1>()
Anruf auf beiden UWP und Android zurück.
ist die Umsetzung in der UWP Projekt enthalten:
using PrismUnityApp2.UWP;
using SharedProject1;
using Xamarin.Forms;
[assembly: Dependency(typeof(SpecialInterface))]
namespace PrismUnityApp2.UWP
{
public class SpecialInterface : IInterface1
{
public SpecialInterface() { }
public int TestMethod(int i)
{
return i;
}
}
}
Schließlich wird die Schnittstelle in einem freigegebenen Projekt wie folgt definiert:
namespace SharedProject1
{
internal interface IInterface1
{
int TestMethod(int i);
}
}
ich die Probe "UsingDependencyService" haben arbeiten in Android, WinPhone schlägt fehl, weil HyperV für Android ausgeschaltet ist.
Was fehlt mir?
Danke für jede Hilfe.
Mit folgenden Pakete/Versionen:
- Prism.Unity.Forms 6.2.0.pre4
- Prism.Forms 6.1.0.pre4
- Xamarin.Forms 2.2.0.45
- Unity 4.0.1
Windows-10 UWP
public void OnNavigatedTo(NavigationParameters parameters) { if (parameters.ContainsKey("title")) Title = (string) parameters["title"] + " and Prism"; IInterface1 iinterface1 = DependencyService.Get<IInterface1>(); if (iinterface1 != null) { int value = iinterface1.TestMethod(1); Title += " ::: " + value; } }
Versuchen Sie, die Schnittstelle öffentlich zu machen? –
Das wäre eine einfache Lösung gewesen, aber ich ersetzte interne mit öffentlichen und es schlägt immer noch fehl. Ich werde es heute noch einmal anschauen, damit ich etwas finden kann –
Sie sollten den Aufruf der Registermethode nicht benötigen, das Attribut sollte ausreichen. Können Sie den Code mit dem DependencyService.Get und der Click-Behandlung veröffentlichen? –