文章插图
在模块注册到应用程序项目中时可以对模块进行配置,如果是自己的模块,首先需要在模块的Module类中添加对应的属性,如Test,在注册时直接给模块属性赋值,如下面的代码 。如何使用模块Module类中的属性,将在后面进行介绍
如果你的模块是对外发布的,想更严谨一些,你可以参考XAF内部模块的做法,单独创建一个Options类,通过Options类收集模块配置,避免使用者直接给Module类中的属性赋值
文章插图
模块间依赖的注册在前面的介绍中,大家应该已经知道模块的依赖与.NET类库的依赖是相似的 。一个XAF模块想依赖另一个XAF模块,首先要引用这个被依赖模块的类库,并在Module类的构造函数中,将被依赖模块中Module类的类型添加到RequiredModuleTypes中,代码如下:
文章插图
由于RequiredModuleTypes的初始值是来自GetRequiredModuleTypesCore方法,所以我们也可以在Module类中重写GetRequiredModuleTypesCore方法来实现相同的操作,代码如下:
文章插图
在上面的代码中,模块注册的先后顺序是不影响后续操作的,甚至依赖模块被无意中重复添加了,也不会有任何影响,因为模块在被正式加载时,会进行相应的过滤,当然最好不要这样做,下面的代码是可以正常运行的
文章插图
模块加载模块加载是在builder.Build()时进行的,模块加载的核心逻辑是放在ModuleList类中的 。
这里简单说一下它的加载逻辑,ModuleList会先加载通过builder在应用程序项目中注册的模块,然后再去加载已加载模块的依赖模块,依赖模块再去加载自身的依赖模块,这里是一个递归,当然在加载过程中ModuleList会判断如果已被加载则跳过,最终会保证ModuleList中每一个模块类型只有一个模块实例,这里的ModuleList就是Application.Modules,你可以通过Application.Modules获取被加载的所有模块实例 。ModuleList类上有一个FindModule方法,可以使用它通过模块类型查找模块实例,那我们就可以在能够访问到Application的情况下,调用Application.Modules.FindModule查找模块实例,就可以访问到模块中的属性 。
总结【Module XAF新手入门 - 模块】模块在XAF中是一个比较重要的概念,模块中还很多知识点,这里只介绍了模块的注册与加载,在后续还会结合其它概念再介绍,同时还要注意在XAF22.1后,XAF项目结构进行了简化,同时模块在应用程序项目中的注册方式也不一样了 。
注意:本系列文章只是讲解XAF中常用到的概念,方便大家理解,具体的操作方法还是需要参考官方文档
经验总结扩展阅读
- 魔方入门如何玩(魔方新手入门万能公式)
- 麻将怎么玩(麻将怎么玩新手入门)
- 国际象棋怎么玩新手入门(国际象棋里面的王后怎么走)
- 国际象棋怎么玩新手入门口诀(象棋心算口诀)
- 国际象棋怎么玩,新手入门(国际象棋新手入门必看)
- 跳棋怎么玩(跳棋怎么玩新手入门)
- 跳跳棋怎么玩(跳棋怎么玩新手入门)
- Module加载的详细说明-保证你有所收获
- JS 模块化-05 ES Module & 4 大规范总结
- 马里奥赛车8新手入门攻略?