日期:2014-05-20  浏览次数:21084 次

IOC 构造函数注入vs属性注入
纠结了一下
构造函数注入vs属性注入

纠结的原因如下

构造函数注入
1.要在构造函数中写那么多,而且不知道是否构造函数new,全部成员都new了感觉好浪费

属性注入
1.要using Ioc的命名空间和添加特性
2.属性必须是public的

最后选择了采用构造函数注入的方式
因为不用using Ioc的命名空间和添加特性,还可以方便切换其他IOC


各位是什么考虑的呢~

------解决方案--------------------
1.不管是构造函数注入还是属性注入,都要先把对象给new 出来,构造函数应该也是public。
2.一般使用 配置文件,属性注入,不用使用特性,直接配置,初始化或依赖,凡是注入的,都要有访问权限,public。
3.复杂的,一般 注册 构造函数和属性, 一起使用,配置一下就行,不用那么纠结。
------解决方案--------------------
引用:
引用:1.不管是构造函数注入还是属性注入,都要先把对象给new 出来,构造函数应该也是public。
2.一般使用 配置文件,属性注入,不用使用特性,直接配置,初始化或依赖,凡是注入的,都要有访问权限,public。
3.复杂的,一般 注册 构造函数和属性, 一起使用,配置一下就行,不用那么纠结。

1.我是这样思考的的,……

IoC 解析对象,其实 就是 调用 构造函数 进行创建对象,当然是 new了。
没有注入的属性,构造函数new了之后,就是默认值。
------解决方案--------------------
区别就是构造方法注入是强制性的(看起来更可靠?),除非涉及到一些奇怪的继承(像aspx),不然都从构造方法注入
------解决方案--------------------
一般都用构造函数注入,属性注入添加特性感觉不爽。能注入的全部注入,不用new了。这个还跟你使用的ioc容器相关,感觉最好的就是,全部通过配置文件,不需要再代码里添加特性之类的。