Модуль Silverlight Prism не готов

Я создаю приложение Silverlight 4.0 с помощью Prism (также известное как руководство по составным приложениям). У меня есть два модуля, оба определены в моем ModuleCatalog.xaml как WhenAvailable. Мой Application_OnStart создает экземпляр моего Bootstrapper и вызывает его метод Run (). После того, как мое приложение запущено и запущено (фактически, пользователь должен нажать кнопку в пользовательском интерфейсе), я затем пытаюсь загрузить модули:

foreach (ModuleInfo mi in moduleCatalog.Modules)
    ...
    Type moduleType = Type.GetType(mi.ModuleType); // moduleType ends up null!

Иногда moduleType оказывается равным нулю. Я убедился, что когда я обнаруживаю значение null, для ModuleInfo State установлено значение LoadingTypes, а не ReadyForInitialization. Я предполагаю, что это означает, что он все еще загружает отдельные файлы * .xap для моих модулей и переносит их типы в домен приложения.

Так что я могу сделать? Я бы с радостью заблокировал, если бы знал, что есть какое-то событие, которое я мог бы прослушать, чтобы узнать, что они наконец все загружены.


person Trinition    schedule 08.06.2010    source источник


Ответы (1)


Если вы собираетесь использовать Prism, не стоит обходить его стороной и создавать свои модули самостоятельно. Призма должна работать не так. Prism не предоставляет событие для завершения загрузки, так как это не то, что вам нужно делать.

Простой случай:

Если вы определите каталог модулей, все эти модули будут загружаться постепенно, поэтому в этом простом случае нет необходимости загружать какие-либо вручную. Вы можете создать модуль запуска в корневом приложении Silverlight с несколькими зависимостями модулей, и этого будет достаточно, чтобы первая страница стала видимой, пока загружается остальная часть приложения.

Требуется дополнительная информация:

Я не могу сказать, что вы на самом деле пытаетесь выполнить, из приведенного выше фрагмента, поэтому дополнительная информация может помочь, но вы должны использовать Unity для разрешения интерфейсов, а не Type.GetType () напрямую. Как правило, вам не нужно разрешать сам модуль, и есть также методы для запуска загрузки по требованию в Prism (на данный момент их нет под рукой ... обновлю это).

Спасибо:

Вы случайно дали ключ к ответу на еще один вопрос, который я задал в Stack Overflow, спасибо за это.

person Gone Coding    schedule 14.09.2010