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

时间:2017-02-02 18:08:45

标签: c# wpf module prism prism-6

我有两个模块:

[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时仍需要复制相同的信息,这些属性是什么?

1 个答案:

答案 0 :(得分:0)

在R. Richards的亲切帮助下,在OP评论中,查看Prism源代码,我发现这些属性仅用于模块发现,尤其是DirectoryModuleCatalog,但我猜测与其他模块发现一样。有了这些,您就无法添加属性所携带的信息,但通过直接模块注册,在简单的ModuleCatalog中,他们自私地将这一切留给您。