castle.windsor框架内 branchservice类的构造函数调用Icleanservice,cleanservice类的构造函数内调用Ibranchservice,出现Icleanservice和Ibranchservice为null,这应该怎么解决!如果只有一方调用则没有问题?请问怎么解决?
建议避免循环注入。
@画沙落叶: 循环注入了。。
@老六代码: 有没有解决方案处理呢?
@画沙落叶: 可以尝试一下属性注入
@老六代码: 属性注入会解决这种循环引用的问题?
@老六代码: 还有没有其他的解决方案呢,大神?
@画沙落叶: 这两个类其中一个类改成属性注入就可以了
不要用构造注入,避免下面这种
private ITestService _service;
public Form1(ITestService testService)
{
InitializeComponent();
_service = testService;
_service.GetMethod();//调用TestService中的GetMethod()方法
}
改成这种
public ITestService TestService { get; set; }
@老六代码: 好的
@老六代码: 我想再问一下,你们在用IOC时用的什么框架?
@画沙落叶: 跟你一样
@老六代码: 那你用的时候是通过属性注入的方式解决这类问题的吗?
@老六代码: 利用属性注入效率怎么样?
@画沙落叶: 我没有循环依赖过,因为我知道这样不对,所以都在避免这种情况
@画沙落叶: 并且,我没用用过属性注入解决过这种问题,你可以尝试一下,最好还是避免循环依赖
@老六代码: 我这几天一直看castle文档想解决这种循环注入的问题,可是依然没有方案解决,我都想自己写一个了
@画沙落叶: 依赖注入本来就不能循坏依赖的,基本上所有的依赖注入框架都不支持,因为这样会造成一个环
你们用castle做依赖注入框架性能怎么样?你们先上项目的性能怎么样
@画沙落叶: 很好,并且这个比其他框架功能更强一点,也有AOP,Named(),Dependency
@画沙落叶: 我验证了一下,属性注入可以解决循环注入的,但是格式必须是
public IMemberInfoService MemberInfoService { get; set; }
属性名必须与实现类保持一致,如上MemberInfoService就是类名
@老六代码: 好的,我也是刚开始用后续用的时候再看看,如果每天请求接口10万次会不会撑得住?
@画沙落叶: 并发量高的影响因素跟依赖注入关系不大
@老六代码: 我怕请求次数多的时候我怕他顶不住!
@老六代码: 我加你qq能不能以后有问题请教一下
@画沙落叶: 309429775
@老六代码: 已经加你了,备注:大华
@老六代码:采纳
你有2个选择:
1)去掉循环依赖
2)不用依赖注入容器
你的意思是去掉castle.windsor依赖注入容器?
@画沙落叶: 是的,依赖注入容器不支持这种反模式
@dudu: 好
建议提供一些构造函数部分的代码
– dudu 6年前@dudu: 代码已贴出
– 画沙落叶 6年前