Die Umwandlung eines abgerufenen Mediators in PureMVC in seine richtige Klasse gibt null zurück
-
16-09-2020 - |
Frage
Ich habe einen Vermittler, den ich für eine Navigationsseite registriert habe:
facade.registerMediator(new NavPageMediator(viewComponent));
Ich versuche, diesen Mediator auf einer anderen Seite wie folgt abzurufen:
var navPageMediator:NavPageMediator = facade.retrieveMediator(NavPageMediator.NAME) as NavPageMediator;
Diese Aussage wird jedoch zurückgegeben null
.Wenn ich versuche, es mit dem zu wirken NavPageMediator(facade.retrieveMediator(NavPageMediator.NAME))
Syntax stattdessen bekomme ich eine
TypeError: Error #1034: Type Coercion failed: cannot convert com.website.mvc.view.page::NavPageMediator@237560a1 to com.website.mvc.view.page.NavPageMediator.`
Ich kann beim besten Willen nicht verstehen, warum NavPageMediator@237560a1
wäre nicht in der Lage, zu konvertieren NavPageMediator
, noch was zwischen der Registrierung des Mediators und seiner Abholung passiert ist, die dies verursacht hat.Besonders seit trace(new NavPageMediator() as NavPageMediator);
kehrt zurück [object NavPageMediator]
.
Übrigens, und das könnte Teil meines Problems sein, verstehe ich nicht, was der @hash am Ende des Objekts ist (@237560a1
).Ist es einfach eine interne Kennung für diese Klasseninstanz?
Bearbeiten:Habe ein paar wichtige Infos hinterlassen:Die SWF-Datei, in der ich den Mediator instanziiere und registriere, ist von der SWF-Datei getrennt, in der ich versuche, ihn abzurufen.
Lösung
Herausgefunden.Es stellte sich heraus, dass es sich um ein ApplicationDomain-Problem handelte.Das Problem wurde gelöst, indem beide SWFs (der Registrant und der Retriever) derselben Domäne zugewiesen wurden.
Außerdem bin ich mir ziemlich sicher, dass der @hash am Ende des Klassennamens ein interner Verweis auf die ApplicationDomain ist, zu der die Klasse gehört.Also NavPageMediator@237560a1
war in einer anderen Domäne als NavPageMediator
(Warum es beim zweiten keinen Hash gab, weiß ich immer noch nicht;das hätte die Sache etwas klarer gemacht).