为什么 ModuleAttribute 和 ModuleDependencyAttribute 在我的 WPF Prism 应用程序中不起作用?

Why are ModuleAttribute and ModuleDependencyAttribute not working in my WPF Prism app?

我有两个模块:

[Module(ModuleName = ModuleNames.Common)]
public class CommonModule: BaseModule

[ModuleDependency(ModuleNames.Common)]
[Module(ModuleName = ModuleNames.Branch, OnDemand = true)]
public class BranchModule : BaseModule

然后我这样注册它们,在 Bootstrapper.ConfigureModuleCatalog:

ctlg.AddModule(ModuleNames.Common, typeof(CommonModule).AssemblyQualifiedName, InitializationMode.WhenAvailable);
ctlg.AddModule(typeof(BranchModule), InitializationMode.OnDemand);

当我检查模块目录时,只有CommonModule配置正确,因为我在AddModule中指定了所有模块属性,而不是因为它的[Module(ModuleName = ModuleNames.Common)]属性。这些属性似乎很容易被忽略,因为尽管 BranchModule 有两个属性,但我没有在 AddModule 中提供该信息,在目录中,这个模块的名称是它的类型名称,它没有依赖项。

如果我在调用 AddModule 时仍然需要复制相同的信息,这些属性有什么用?

在 R. Richards 的慷慨帮助下,在 OP 评论中查看 Prism 源代码,我发现这些属性仅用于模块发现,特别是 DirectoryModuleCatalog,但我冒险对其他模块发现的猜测也是如此。有了这些,你就没有办法添加属性携带的信息,但是通过直接模块注册,在一个简单的 ModuleCatalog 中,他们自私地把这一切都留给了你。