ABP新增模块可能遇到的问题

时间:2022-08-31 18:12:54

当我们新增一个模块时:

 public class SSORedisModule: AbpModule
{
//public override void PreInitialize()
//{
// base.PreInitialize();


//}
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}

可能在模块那里会添加这样的代码

然后:

在需要用的模块添加依赖: [DependsOn(typeof(SSORedisModule))] 主要是这句。

 [DependsOn(typeof(SSORedisModule))]
public class SSOCoreModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}

然后,以为我们编写的接口和类就可以用了?我们以为就可以运行了。但错了,它还是没有注册成功。

看了文档才发现,原来是这个原因:

ABP依赖注入的基础结构
在编写应用程序时遵循最佳实践和一些约定,ABP几乎让依赖注入框架使用变得无形。

注册:

在ABP中,有很多种不同的方法来注册你的类到依赖注入系统。大部分时间,常规方法就足够了。

常规注册:

按照约定,ABP自动注册所有 Repositories, Domain Services, Application Services, MVC 控制器和Web API控制器

public interface IPersonAppService : IApplicationService
{
//...
}

public class PersonAppService : IPersonAppService
{
//...
}
IApplicationService 也就是要继续这个接口才可以自动注册 。。。。晕死,,上面说到的四人。任何一个都可以,相应的接口看文档。