Приведение извлеченного посредника с PureMVC в качестве его надлежащего класса возвращает null
-
16-09-2020 - |
Вопрос
У меня есть посредник, которого я зарегистрировал для страницы навигации:
facade.registerMediator(new NavPageMediator(viewComponent));
Я пытаюсь восстановить этот посредник на другой странице следующим образом:
var navPageMediator:NavPageMediator = facade.retrieveMediator(NavPageMediator.NAME) as NavPageMediator;
Однако это утверждение возвращает null
.Если я попытаюсь разыграть его, используя NavPageMediator(facade.retrieveMediator(NavPageMediator.NAME))
синтаксис вместо этого я получаю
TypeError: Error #1034: Type Coercion failed: cannot convert com.website.mvc.view.page::NavPageMediator@237560a1 to com.website.mvc.view.page.NavPageMediator.`
Я ни за что на свете не могу понять, почему NavPageMediator@237560a1
было бы невозможно преобразовать в NavPageMediator
, ни то, что произошло между регистрацией посредника и его извлечением, что вызвало это.Особенно с тех пор, как trace(new NavPageMediator() as NavPageMediator);
ВОЗВРАТ [object NavPageMediator]
.
Кстати, и это может быть частью моей проблемы, я не понимаю, что такое @hash в конце объекта (@237560a1
).Является ли это просто внутренним идентификатором для этого экземпляра класса?
Редактировать: Оставил немного важной информации:SWF-файл, в котором я создаю экземпляр и регистрирую посредник, отделен от SWF-файла, в котором я пытаюсь его извлечь.
Решение
Разобрался в этом.Оказалось, что это проблема с доменом приложения.Назначение обоих SWFS (владельца регистрации и ретривера) одному и тому же домену решило проблему.
Кроме того, я почти уверен, что @hash в конце имени класса является внутренней ссылкой на ApplicationDomain, к которому принадлежит класс.Итак NavPageMediator@237560a1
находился в другом домене, чем NavPageMediator
(почему на втором не было хэша, я до сих пор не уверен;это бы немного прояснило ситуацию).