ABP框架 - 模块系统 (2)

在ABP中定义了两个接口IAssemblyFinder和ITypeFinder,这两个接口是ABP用来检测应用中的程序中的程序集和类型的。ABP为这两个接口提供了默认实现,在默认实现中,仅仅从上述模块(通过启动模块定义的模块依赖解析出的模块,以及插件模块)中来查找程序集和类型。如果想添加其他程序集,可以重写GetAdditionalAssemblies方法。

模块中的自定义方法

在模块中可以定义自定义方法,模块中的自定义方法可以被其他依赖的模块调用。假设MyModule2模块依赖MyModule1模块,并且想在PreInitialize方法中调用MyModule1模块的自定义方法,如下代码所示:

public class MyModule1 : AbpModule { public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } public void MyModuleMethod1() { //this is a custom method of this module } } [DependsOn(typeof(MyModule1))] public class MyModule2 : AbpModule { private readonly MyModule1 _myModule1; public MyModule2(MyModule1 myModule1) { _myModule1 = myModule1; } public override void PreInitialize() { _myModule1.MyModuleMethod1(); //Call MyModule1's method } public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } }

在这里,我们通过构造函数注入将MyModule1模块注入到MyModule2模块,这样我们就可以在MyModule2模块总调用MyModule1的方法了,但是前提条件是MyModule2模块依赖MyModule1模块。

模块配置

ABP中建议使用启动配置(startup configuration)来配置模块

模块生存期

定义模块的类会被自动注册为单例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfxjx.html