[英]WPF+PRISM+MEF initializing DownloadedPartCatalogCollection
我正在嘗試從MefBootStrapper實現中初始化模塊
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,Version = 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
{
}
問題是,我在哪里導出downloadedPartCatalog?
您的模塊類必須實現IModule
接口,並具有ModuleExportAttribute屬性。
[ModuleExport(typeof(ModuleD))]
public class ModuleD : IModule
{...}
或使用AssemblyCatalog自動發現和加載模塊。
protected override void ConfigureAggregateCatalog()
{
base.ConfigureAggregateCatalog();
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(ModuleA).Assembly));
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(ModuleC).Assembly));
. . .
}
請閱讀棱鏡文檔: https : //github.com/PrismLibrary/Prism/blob/master/Documentation/WPF/30-ModularApplicationDevelopment.md#modules-in-mef
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.