0

我有两个模块:

[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

4

1 回答 1

0

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

于 2017-02-05T12:58:30.773 回答