在abp中, 模板的定义就是一个类, 只需要继承 abpmodule, 该类可以通过nuget包搜索abp安装。
下面演示在应用程序或类库中, 定义一个模块:
public class applicationmodule : abpmodule { public override void initialize() { iocmanager.registerasmblybyconvention(typeof(applicationmodule).getasmbly()); } }
说明: 关于iocmanager.registerasmblybyconvention的作用, 则是将当前程序集模块注册到容器当中, 作为一个模块, 常见的是暴露模块对应的服务,
而其中所有的服务, 都是按照声明周期而声明, 例如: itransientdependency ,isingletondependency。
下面展示了iocmanager.registerasmblybyconvention 执行的部分细节:
public void registerasmbly(iconventionalregistrationcontext context){ //transient context.iocmanager.ioccontainer.register( class.fromasmbly(context.asmbly) .includenonpublictypes() .badon<itransientdependency&相对偏差gt;() .if(type => !type.gettypeinfo().isgenerictypedefinition) .withrvice.lf() .withrvice.defaultinterfaces() .lifestyletransient() ); //singleton context.iocmanager.ioccontainer.register( class.fromasmbly(context.asmbly) .includenonpublictypes() .badon<isingletondependency>() .if(type => !type.gettypeinfo().isgenerictypedefinition) .withrvice.lf() 土建施工员 .withrvice.defaultinterfaces() 社团招新宣传 .lifestylesingleton() ); //...}
在abpmodule中, 定义了几组方法, 分别在应用程序模块加载的前后进行, 如下:
public virtual void initialize(); public virtual void postinitialize(); public virtual void preinitialize(); public virtual void shutdown();initialize : 通常, 这里用于注册程序集依赖选项postinitialize : 初始化最后调用preinitialize : 初始化之前调用shutdown : 当应用程序关闭时调用
通常来讲, 一个模块往往依赖与一个或者多个模块, 这里, 也涉及到了模块的加载生命周期。
假设: 模块a依赖于模块b, 那么意味着模块b会先于模块a初始化。
关于模块之间的依赖, 则可以通过特性的方式 dependson 为模块显示声明, 如下所示:
[dependson(typeof(bmodule))]public class amodule : abpmodule{ public override void initialize() { //... }}
任何模块都依赖于启动模块进行加载, 这很常见, 例如机箱中的各个模块: 内存、硬盘、显卡、电源。 都需要通电的过程, 让他们进行整个启动过程。
abp 则依赖于 abpbootstrapper 来进行调用初始化, 可以通过 initialize 方法加载。
public static class applicationbootstrapper { public static abpbootstrapper abpbootstrapper { get; private t; } public static void init(){ //... abpbootstrap重阳节的手抄报per.initialize(); } }
同样, 模块也可以读取指定文件夹路径的方式进行加载模块, 如下所示:
rv四六级总分ices.addabp<mystartupmodule>(options =>{ options.pluginsources.add(new folderpluginsource(@"c:\myplugins"));});orrvices.addabp<mystartupmodule>(options =>{ options.pluginsources.addfolder(@"c:\myplugins");});
查看更多
到此这篇关于asp.net core zero模块系统的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-05 00:54:08,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/10a9ea25157f2abaad6bde75f4731f30.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:ASP.NET Core Zero模块系统讲解.doc
本文 PDF 下载地址:ASP.NET Core Zero模块系统讲解.pdf
留言与评论(共有 0 条评论) |