Blazor Dependency Injection: Wie kann ich in einer Component auf die Werte der Klasse zugreifen?
Hallo,
ich habe im \Data-Ordner eine .cs-Datei mit einigen Variablen etc..
Ich wollte nun von einer .razor-Datei aus auf diese Werte zugreifen. Aber ich verstehe die Dependency Injection nicht so. Ich habe gegoogelt, aber irgendwie war alles schwammig erklärt.
Was ich gemacht habe:
Program.cs
builder.Services.AddSingleton<Daten>();
Daten ist in dem Fall die Klasse.
Und in der Component:
@using app.Data
@inject Daten
Aber ich kann nicht auf die Werte in der Klasse zugreifen und ich krieg den Fehler:
errorRZ1015: The ˋinject' directive expects an identifier.
Weiß jemand, was falsch ist?
1 Antwort
Dem Ausdruck fehlt ein Identifier.
@inject Daten Datenobjekt
Wenn du künftig Properties/Methoden des Daten-Objekts aufrufen möchtest, dann über den Identifier.
Dependency Injection sorgt dafür, dass dir intern eine Instanz des Typs Daten angelegt und dann Datenobjekt zugewiesen wird.
Klassische Ursachen, die mir für so etwas einfallen, wären:
- Die nicht gefundene Datei existiert nicht / wurde nicht an den richtigen Ort kopiert.
- Die Kompilierung / das Bauen des Projekts ist fehlgeschlagen.
- Eine Pfadangabe ist falsch.
Hallo, Ursache 1: Die Datei befindet sich im Data Ordner.
Ursache 2: Der Compiler läuft einwandfrei. Habe mal protected override void OnInitialized() entfernt und die Kompilierung war erfolgreich.
Ich hab mal ein Test Projekt erstellt (Blazor Server, nicht WASM) habe eine Datei (TestData.cs erstellt) mit der Klasse Dat.
Habe nun in Program.cs: builder.Services.AddSingleton<Dat>(); gemacht.
Nun hab ich in index.razor folgendes gemacht:
@using app.Data
@inject Dat Datenobjekt
Fehlt noch was oder was könnte die Ursache sein?
In der Microsoft Dokumentation gibt es einen separaten Artikel zu DI.
Ich würde allerdings infrage stellen, ob dein Fehler überhaupt in Abhängigkeit zu deiner eingebauten DI steht. Möglicherweise hast du bspw. in deinem Razor-Code irgendetwas stehen, was das Problem verursacht. Mehr kann ich dazu nicht sagen.
Hallo,
danke für deine Antwort! Ich erhalte nun den Error cs0103. Also das bedeutet, dass Blazor die Datei nicht lädt oder, dass die Seite die Datei nicht findet oder erkennt.
Weißt du an was das liegen könnte?