In Blazor WASM habe ich einen Service mit Event -Immobilie.
Ich möchte diese Eigenschaft unmittelbar nach der Injektion des Dienstes in eine Komponente abonnieren, die als übergeordnete Komponente (Basisklasse) für andere untergeordnete Komponenten verwendet wird.
Code: Select all
public interface ISubService
{
event Action OnLoad;
}
public partial class ParentComponent : ComponentBase
{
}
Es gibt verschiedene Möglichkeiten, wie es zu tun ist, aber keiner von ihnen tut das, was ich will (außer der hackischen Problemumgehung am Ende). Onparameterset . Theoretisch kann ich das Ereignis in einer dieser Methoden abonnieren, aber das Hauptproblem, das ich dabei habe, ist, dass wir, wenn eine untergeordnete Komponente zu einem Ininitialized oder Onparameterset verwendet wird, um Basis zu rufen. Injizieren Sie den Dienst über [Inject] oder @Inject und rufen Sie dann den Standardkonstruktor auf. Dies funktioniert nicht, da der Konstruktor aufgerufen wird, bevor diese injizierten Dienste ausgefüllt werden. Ich kann also nicht auf das Ereignis zugreifen. ist, dass die Registrierungslogik nur im übergeordneten übergeordnet ist und in keiner Weise in untergeordnete Komponenten ausbreitet. Ich habe das gemacht: < /p>
public partial class ParentComponent : ComponentBase
{
private ISubService? _subServiceHidden { get; set; }
[Inject] private ISubService _subService
{
get => _subServiceHidden!;
set
{
_subServiceHidden = value;
_subServiceHidden.OnLoad += HandleLoadingAction;
}
}
public void HandleLoadingAction(bool isLoading)
{
// Do something
}
}
< /code>
Auf diese Weise ist das Ereignis unmittelbar nach dem Füllen des Dienstes registriert, und ich muss untergeordnete Komponenten in keiner Weise anpassen. Oder ist dies die aktuelle Blazor -Einschränkung?>