abp用的是什么DI框架,一般第三方框架都可以通过一些方法做到循环注入。
比如autofac http://www.cnblogs.com/kissdodog/p/3611799.html
但是就目前现在来看,我想解决的就是在abp框架下,做到互相引用 注入咋办?有办法做到吗?
@Tokyo^hot:
abp用的是什么DI框架,是abp自己造的轮子,还是用的第三方组件
互相引用会造成递归循环解析依赖,肯定挂啊。
那咋办?我想用别的service里面的方法 还得自己重新写?
谁知道有什么好办法么,不想又写一套一样的逻辑啊,
不是所有的接口都会被自动注册到IOC容器里,要按abp的规范,比如,是实体类就得实现IEntity接口,是领域类就得实现IDomainService接口,是应用类就得实现IApplication接口,仓储类是IRepositoy接口,才能通过构造器自动注入.并且类的命名要规范,不然abp认不出来也是不能注册的.你也可查看IIocManager的这个里面有注册你的这个类就知道了.abp没有相互引用的关系,因为这些类都是注册到独立的容器里面.跟类是没有关系的.
循环引用和Abp框架没啥关系,只要两个模块存在互相引用都会出问题,想要解决这个问题,办法就是引入第三者协调,在Abp中,AService和BService互相引用,那么可以通过底层的IServiceProvider来协调,即两个Service注入IServiceProvider 或者 ILazyAbpServiceProvider ,然后通过 service.GetRequiredService<AService>(),service.GetRequiredService<BService>() 的方式来解耦AB的循环依赖