2017-06-23 18 views
0

問題:DirectoryModuleCatalog正常行爲時Modulecatalog.Modules爲空?

如果我使用DirectoryModuleCatalog,則ModuleCatalog保持空的,只有後base.InitializeModules();模塊位於ModuleCatalog中,但已經初始化。

protected override IModuleCatalog CreateModuleCatalog() 
{ 
    var moduleCatalog = new DirectoryModuleCatalog() { ModulePath = @".\Modules" }; 
    return moduleCatalog; 
} 

    protected override void InitializeModules() 
    { 
     // No Modules are in the list 
     // I aspect, that temp shall not empty, temp shall have the modules in the list of my directory, of the module shall not be initialized. 
     var temp = ModuleCatalog.Modules; 
     base.InitializeModules(); 
     // Modules visible but already init done 
    } 

如果我通過代碼添加模塊到ModuleCatalog,那麼當然我的列表不爲空

protected override IModuleCatalog CreateModuleCatalog() 
     { 
      Type module1Type = typeof(ModuleHelper); 
      string path = module1Type.Assembly.Location; 
      IModuleCatalog moduleCatalog = new ModuleCatalog(); 
      moduleCatalog.AddModule(
        new Prism.Modularity.ModuleInfo() 
        { 
         ModuleName = module1Type.Name, 
         ModuleType = module1Type.AssemblyQualifiedName, 
         Ref = new Uri(path, UriKind.RelativeOrAbsolute).AbsoluteUri 
        }); 

     } 

protected override void InitializeModules() 
     { 
      // temp is not empty 
// Modules visible and init not done 
      var temp = ModuleCatalog.Modules; 

      base.InitializeModules(); 

     } 

問:

如果該模塊沒有在列表中, DirectoryModuleCatalog已被實例化後 ?這是DirectoryModuleCatalog的正常 行爲嗎?

+0

由於此行爲,您是否遇到問題?有什麼東西壞了? –

+0

我的意思是一個錯誤或者我誤解了DirectoryModuleCatalog。希望有人確認錯誤或糾正我的理解。我想使用DirectoryModuleCatalog來顯示可用的模塊,但在它們被初始化之前,這似乎不適用於此行爲。 – Shazter

回答

1

它的行爲完全如預期。 Prism DirectoryModuleCatalog類允許您將本地目錄指定爲WPF中的模塊目錄。此模塊目錄將掃描指定的文件夾並搜索爲您的應用程序定義模塊的程序集。要使用這種方法,您需要在模塊類上使用聲明性屬性來指定模塊名稱和它們具有的任何依賴關係。