Modulecatalog.Modules 为空且 DirectoryModuleCatalog 正常行为?

Modulecatalog.Modules is empty with DirectoryModuleCatalog normal behavior?

问题:

如果我使用 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 的行为?

它的行为完全符合预期。 Prism DirectoryModuleCatalog class 允许您将本地目录指定为 WPF 中的模块目录。此模块目录将扫描指定的文件夹并搜索为您的应用程序定义模块的程序集。要使用这种方法,您需要在模块上使用声明性属性 classes 来指定模块名称和它们具有的任何依赖项。