在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)来配置模块
模块生存期定义模块的类会被自动注册为单例