Modulecatalog.Modules是空的,DirectoryModuleCatalog是否正常?

时间:2017-06-23 21:13:33

标签: c# wpf unity-container prism

问题:

如果我使用 DirectoryModuleCatalog ,则 ModuleCatalog 保持为空,只有在 base.InitializeModules(); 模块位于< em> 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的行为?

1 个答案:

答案 0 :(得分:1)

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