首页新闻找找看学习计划

castle.windsor 依赖注入问题

0
悬赏园豆:5 [已解决问题] 解决于 2018-11-27 17:17

castle.windsor框架内 branchservice类的构造函数调用Icleanservice,cleanservice类的构造函数内调用Ibranchservice,出现Icleanservice和Ibranchservice为null,这应该怎么解决!如果只有一方调用则没有问题?请问怎么解决?

大华q的主页 大华q | 初学一级 | 园豆:2
提问于:2018-11-27 12:58

建议提供一些构造函数部分的代码

dudu 1年前

@dudu: 代码已贴出

画沙落叶 1年前
< >
分享
最佳答案
1

建议避免循环注入。

收获园豆:5
chesterdotchen | 小虾三级 |园豆:504 | 2018-11-27 13:43

大华q | 园豆:2 (初学一级) | 2018-11-27 13:53

@画沙落叶: 循环注入了。。

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 13:54

@老六代码: 有没有解决方案处理呢?

大华q | 园豆:2 (初学一级) | 2018-11-27 13:56

@画沙落叶: 可以尝试一下属性注入

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 13:56

@老六代码: 属性注入会解决这种循环引用的问题?

大华q | 园豆:2 (初学一级) | 2018-11-27 13:59

@老六代码: 还有没有其他的解决方案呢,大神?

大华q | 园豆:2 (初学一级) | 2018-11-27 14:01

@画沙落叶: 这两个类其中一个类改成属性注入就可以了
不要用构造注入,避免下面这种

   private ITestService _service;

    public Form1(ITestService testService)
    {
        InitializeComponent();

        _service = testService;
        _service.GetMethod();//调用TestService中的GetMethod()方法
    }

改成这种

 public ITestService TestService { get; set; }
chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:07

@老六代码: 好的

大华q | 园豆:2 (初学一级) | 2018-11-27 14:14

@老六代码: 我想再问一下,你们在用IOC时用的什么框架?

大华q | 园豆:2 (初学一级) | 2018-11-27 14:15

@画沙落叶: 跟你一样

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:15

@老六代码: 那你用的时候是通过属性注入的方式解决这类问题的吗?

大华q | 园豆:2 (初学一级) | 2018-11-27 14:16

@老六代码: 利用属性注入效率怎么样?

大华q | 园豆:2 (初学一级) | 2018-11-27 14:17

@画沙落叶: 我没有循环依赖过,因为我知道这样不对,所以都在避免这种情况

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:17

@画沙落叶: 并且,我没用用过属性注入解决过这种问题,你可以尝试一下,最好还是避免循环依赖

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:19

@老六代码: 我这几天一直看castle文档想解决这种循环注入的问题,可是依然没有方案解决,我都想自己写一个了

大华q | 园豆:2 (初学一级) | 2018-11-27 14:20

@画沙落叶: 依赖注入本来就不能循坏依赖的,基本上所有的依赖注入框架都不支持,因为这样会造成一个环

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:21

你们用castle做依赖注入框架性能怎么样?你们先上项目的性能怎么样

大华q | 园豆:2 (初学一级) | 2018-11-27 14:22

@画沙落叶: 很好,并且这个比其他框架功能更强一点,也有AOP,Named(),Dependency

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:24

@画沙落叶: 我验证了一下,属性注入可以解决循环注入的,但是格式必须是

    public IMemberInfoService MemberInfoService { get; set; }

属性名必须与实现类保持一致,如上MemberInfoService就是类名

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:32

@老六代码: 好的,我也是刚开始用后续用的时候再看看,如果每天请求接口10万次会不会撑得住?

大华q | 园豆:2 (初学一级) | 2018-11-27 14:49

@画沙落叶: 并发量高的影响因素跟依赖注入关系不大

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 14:53

@老六代码: 我怕请求次数多的时候我怕他顶不住!

大华q | 园豆:2 (初学一级) | 2018-11-27 14:54

@老六代码: 我加你qq能不能以后有问题请教一下

大华q | 园豆:2 (初学一级) | 2018-11-27 14:54

@画沙落叶: 309429775

chesterdotchen | 园豆:504 (小虾三级) | 2018-11-27 15:00

@老六代码: 已经加你了,备注:大华

大华q | 园豆:2 (初学一级) | 2018-11-27 15:01

@老六代码:采纳

大华q | 园豆:2 (初学一级) | 2018-11-27 17:18
其他回答(1)
0

你有2个选择:
1)去掉循环依赖
2)不用依赖注入容器

dudu | 园豆:39704 (高人七级) | 2018-11-27 14:09

你的意思是去掉castle.windsor依赖注入容器?

支持(0) 反对(0) 大华q | 园豆:2 (初学一级) | 2018-11-27 14:13

@画沙落叶: 是的,依赖注入容器不支持这种反模式

支持(0) 反对(0) dudu | 园豆:39704 (高人七级) | 2018-11-27 14:31

@dudu: 好

支持(0) 反对(0) 大华q | 园豆:2 (初学一级) | 2018-11-27 14:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册