为什么 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
中,他们自私地把这一切都留给了你。
我有两个模块:
[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
中,他们自私地把这一切都留给了你。