gibt es einen Weg bei einem Hybrid Projekt, dass auf Shared Ressourcen zugreift, einen @inject Service Plattformabhängig zu definieren?
Ich habe einen DialogService der nur auf mobilen Geräten verfügbar ist und dort die nativen MAUI Funktionen nutzt.
Starte ich das Projekt jetzt im Browser, funktioniert natürlich die Seite mit dem jeweiligen Service @inject nicht mehr, da dies nicht in der Program.cs referenziert werden kann.
Ein Javascript Inject habe ich bereits, der abfängt ob ich mich auf Mobil oder Desktop bewege.
Ein "einfach Gedachter" Ansatz war das ganze im @Code Block abzufangen innerhalb der benötigten Funktion.
Da ich jedoch relativ neu mit Blazor arbeite, verstehe ich noch nicht so eine Menge davon.
async void findAnschrift()
{
if (ansSuchBeg is not null)
{
var result = anschriftService.GetAnschriften(ansSuchBeg);
anschriften = result;
}
else
{
if (isDevice == "mobile")
{
await DialogService.DisplayAlert("Kein Suchbegriff", "Bitte einen Suchbegriff eingeben", "OK");
}
}
}
Geht leider nicht.
Der zweite Ansatz war die OnInitialized
protected async override void OnInitialized()
{
base.OnInitialized();
mobile = await jsRuntime.InvokeAsync<bool>("isDevice");
isDevice = mobile ? "Mobile" : "Desktop";
if (isDevice == "mobile")
{
@inject IDialogService DialogService
}
}
Leider geht das auch nicht.
Scheint mir so als ob es egal ist wo das @inject steht, es wird sofort beim laden der Seite bearbeitet ohne Code zu beachten.
Hab irgendwie dazu auch nichts bei Onkle Google gefunden.