我想从我的MefBootStrapper实施WPF + PRISM + MEF初始化DownloadedPartCatalogCollection
Type type = typeof(OrderDetailsModule.OrderDetailsModule);
ModuleInfo mi = new ModuleInfo {
ModuleName = type.Name,
Ref = new Uri(type.Assembly.Location, UriKind.RelativeOrAbsolute).AbsoluteUri,
InitializationMode =InitializationMode.WhenAvailable,
ModuleType = type.AssemblyQualifiedName
};
this.ModuleCatalog.AddModule(mi);
初始化模块,我得到一个错误
无法加载模块OrderDetailsModule类型。 \ r \ n错误为: 无法找到 导出模块中的 'OrderDetailsModule.OrderDetailsModule,OrderDetailsModule, 版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null'模块。在模块目录 比赛上ModuleExportAttribute指定的模块类型确保模块的名称。”
挖下去棱镜,在MefModuleInitializer,有一个if (this.downloadedPartCatalogs.TryGet(moduleInfo, out partCatalog))
和下载的部分是空的。我可以看到在MefModuleInitializer类,downloadedPartCatalogs通过ImportingConstructor属性注入。
这是我OrderDetailsModule类
[Export("OrderDetailsModule")]
public class OrderDetailsModule
{
}
的问题是,我在哪里可以导出downloadedPartCatalo GS?
加入ModuleExport解决错误。但我的视图模型尚未初始化。据我所知,这将被推迟,直到视图实际上被放置在一个地区。可能有更好的方法来做到这一点,但现在我可以强制创建我的视图模型吗?我试过PartCreationPolicy [PartCreationPolicy(CreationPolicy.Shared)](期望在启动时创建一个单例实例)。我正在做的是做一个[ViewExport(RegionName = RegionNames.OrderDetails)]到一个小区域使棱镜加载我的视图模型。 – asb