2017-06-23 1 views
0

Problème:Modulecatalog.Modules est vide avec le comportement normal de DirectoryModuleCatalog?

Si j'utilise le DirectoryModuleCatalog, le ModuleCatalog garde vide, seulement après base.InitializeModules(); les modules sont dans le ModuleCatalog, mais déjà initialisés.

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 
    } 

Si j'ajoute les modules par code à la ModuleCatalog, alors bien sûr ma liste est pas vide

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(); 

     } 

Question:

Si les modules pas dans la liste être, après que le DirectoryModuleCatalog a été instancié? Est-ce le comportement normal pour DirectoryModuleCatalog?

+0

Vous rencontrez un problème à cause de ce comportement? Quelque chose est cassé? –

+0

Je veux dire est un bug ou je me méprends sur DirectoryModuleCatalog. J'espère que quelqu'un confirmera le bogue ou corrigera ma compréhension. Je voudrais utiliser DirectoryModuleCatalog pour montrer les modules disponibles, mais avant qu'ils ne soient initialisés et ceci ne semble pas possible avec ce comportement. – Shazter

Répondre

1

Il se comporte exactement comme prévu. La classe Prism DirectoryModuleCatalog vous permet de spécifier un répertoire local en tant que catalogue de module dans WPF. Ce catalogue de modules analyse le dossier spécifié et recherche les assemblages qui définissent les modules pour votre application. Pour utiliser cette approche, vous devrez utiliser des attributs déclaratifs sur vos classes de module pour spécifier le nom du module et les dépendances qu'ils ont.