Silverlight棱镜模块未就绪

Silverlight棱镜模块未就绪,silverlight,prism,cab,Silverlight,Prism,Cab,我正在用Prism(也称为复合应用程序指南)构建Silverlight 4.0应用程序。我有两个模块,都在ModuleCatalog.xaml中定义为whenavaailable。我的应用程序_OnStart实例化我的引导程序并调用它的Run()方法。在我的应用程序启动并运行后(实际上,用户必须单击UI中的按钮),我将尝试加载模块: foreach (ModuleInfo mi in moduleCatalog.Modules) ... Type moduleType = Typ

我正在用Prism(也称为复合应用程序指南)构建Silverlight 4.0应用程序。我有两个模块,都在ModuleCatalog.xaml中定义为whenavaailable。我的应用程序_OnStart实例化我的引导程序并调用它的Run()方法。在我的应用程序启动并运行后(实际上,用户必须单击UI中的按钮),我将尝试加载模块:

foreach (ModuleInfo mi in moduleCatalog.Modules)
    ...
    Type moduleType = Type.GetType(mi.ModuleType); // moduleType ends up null!
有时,moduleType最终为null。我已经验证了当我遇到null时,ModuleInfo的状态是LoadingTypesNotReadyForInitialization。我假设这意味着它仍在为我的模块下载单独的*.xap文件,并将它们的类型带入应用程序域


那我该怎么办?如果我知道有什么活动我可以听,我会很高兴地阻止,知道他们最终都被加载了

如果您打算使用Prism,您不应该绕过它自己创建模块。这不是棱镜的工作方式。Prism不提供加载完成事件,因为这不是您应该做的事情

简单案例: 如果您定义了一个模块目录,那么所有这些模块都将逐步加载,因此在这种简单的情况下不需要手动加载任何模块。您可以在根Silverlight应用程序中创建一个启动模块,该模块具有一些模块依赖项,足以在加载其余应用程序时显示第一页

需要更多信息: 我无法从上面的代码片段中看出您实际想要完成什么,因此更多信息会有所帮助,但您应该使用Unity来解析接口,而不要直接键入.GetType()。您通常不需要解析模块本身,而且在Prism中也有触发按需加载的方法(目前手头没有这些方法…将更新此方法)

谢谢: 您无意中提供了一条关于堆栈内溢出的答案的线索,因此对此表示感谢