@自由、创新、研究、探索……
...windsor和spring.net也有属性注入的好不好,你就一2
非常感谢,我想要封源码,wangxj02@163.com,先谢谢了。
re: Nfx 类库 0.1.3089.20632 发布 zhengxionghua 2008-06-17 23:15
文章开头的连接可以看到全部,还有示例下载
:)
re: Nfx 类库 0.1.3089.20632 发布 SOSOS's BLog 2008-06-17 18:56
图片都显示不出呢?`
这个好像翻译了 英文的帮助,很生硬,原文也不好,太简单,
我单步调式代码后发现,有些细节上根本不是这样,比如:
“当系统实例化 MyApplication 类时,它检测属性确定这是否是一个类型为 MyListener 的监听程序” 我仔细看了看,并不是把MyApplication 实例化的时候 就确定 MyListener 的 。具体的 确定监听,是 依赖注入容器的 ObjectBuilder。要找到 代码中真正的 把分离的 事件和 处理程序 绑定一起的,还是比较麻烦,因为是ObjectBuilder中的代码来做的,而在entlib中,那些代码是外部代码。
希望能写一些带有自己理解的文章。
最近看到很多这个东西
不错
enterprise library新的东西,应该会搅起一场腥风血雨
re: 深入 Unity 1.x 依赖注入容器之一:入门 Dorian Deng 2008-05-22 23:53
@浪子
@紫色阴影
@b4nc
以上我们讨论的问题,我会在《深入 Unity 1.x 之四》中给出一个满意的答案,而且是一个大家都期待的答案。
@Dorian Deng
不过很多人不喜欢Xml配置,就喜欢用Attribute 呵呵
@Dorian Deng
DI可替换是经常会遇到的。
Program类使用Unity是没有问题的,但是上面所写的方法是从容器中获得对象显式给属性赋值,不够透明
要透明的话被注入的类的属性就得加上[Dependency]吧,这样又太侵入了
当然这里可以用Factory
这篇文章有些观点说得很好
http://ayende.com/Blog/archive/2008/02/24/Reviewing-Unity.aspx
@浪子
Spring/Spring.Net 算是比较好的 Java下还有一堆 :)
re: 深入 Unity 1.x 依赖注入容器之一:入门 Dorian Deng 2008-05-22 06:45
@紫色阴影
我指的是示例中的 Program 类,假如要在其中使用 Unity 来获取对象,如果不用其 API,又如何称为使用了 Unity?好绕的问题
如果连 DI 容器也要求可替换的,那就需要自己写代码来做成 Provider,这不就将问题复杂了,也失去了使用 DI 的好处。
@紫色阴影
想知道.net/java底下哪些IoC容器是非侵入性,thanks in advance.^_^
嗯.没错.
所以说对于需要非侵入性的IoC容器,适用两个场景:
1.现有程序,需要加入IoC来做对象注入
2.可以预见未来有可能会替换IoC容器的provider
如果这两种情况就需要非侵入性的.
--引用--------------------------------------------------
紫色阴影: 如果现在有一大堆code存在,而需要加上IOC,难道要所有需要注入的地方都得改code?
而且非侵入性的也容易替换
--引用--------------------------------------------------
浪子: 明白了,b4nc是要做完全的零耦合啊。
不过没仔细衡量过这样子做是为了解决什么问题?似乎没人整天换IoC容器?
--------------------------------------------------------
--------------------------------------------------------
@Dorian Deng
为什么没有意义?为什么我的代码要依赖于Unity的API呢
re: 深入 Unity 1.x 依赖注入容器之一:入门 Dorian Deng 2008-05-21 19:16
@紫色阴影
是否被侵入是针对服务提供对象而言的,对于服务使用对象进行这样的讨论没有意义。
如果现在有一大堆code存在,而需要加上IOC,难道要所有需要注入的地方都得改code?
而且非侵入性的也容易替换
--引用--------------------------------------------------
浪子: 明白了,b4nc是要做完全的零耦合啊。
不过没仔细衡量过这样子做是为了解决什么问题?似乎没人整天换IoC容器?
--------------------------------------------------------
明白了,b4nc是要做完全的零耦合啊。
不过没仔细衡量过这样子做是为了解决什么问题?似乎没人整天换IoC容器?
--引用--------------------------------------------------
紫色阴影: @浪子
using Microsoft.Practices.Unity;
这就算是侵入了
--------------------------------------------------------
@浪子
using Microsoft.Practices.Unity;
这就算是侵入了
Clark Zheng兄已经回答了你的问题。
使用属性注入即可,并不需要如你说的那样子,超长构造函数^_^
--引用--------------------------------------------------
b4nc: --引用--------------------------------------------------
Clark Zheng: @b4nc
不知所云,Unity也支持属性注入和方法调用注入呀
--------------------------------------------------------
这位仁兄,有没有看清楚讨论的重点?是非侵入式注射。
--引用--------------------------------------------------
Dorian Deng: @b4nc
需要构造函数超长的情况实质上很少出现,如果出现这种情况,就应该首先考虑是不是自己的设计上存在问题了。
--------------------------------------------------------
问题是,我现在想非侵入式注射多个对象,在Unity里只能采用这种超长的构造函数。
我一直感觉不理解的是,像属性,方法注射,在技术上完全可以做到非侵入的,为什么现在需要依赖于Unity?
或许我只能期待Untiy的下一个版本了。
--------------------------------------------------------
@Dorian Deng
Unity还是不错的
和Guice有点像,Guice利用annotation,Unity使用attribute
的确侵入性非常强,到处需要引用第三方的库,如别人所说的“简直是侵略”
但是可以用设计来避免这个问题
re: 深入 Unity 1.x 依赖注入容器之一:入门 Dorian Deng 2008-05-21 14:14
@b4nc
你会错我的意思了,我只是说没有人要求你在不合适的时机使用 Unity,它不过是一个工具,解决不了你的问题,当然可以使用其他的。与其在此讨论某个框架多不好,某个框架多好,不如好好讨论下在哪种环境可以发挥更好的作用,而哪些情况下不适用使用。
另外,我的看法是什么?你的看法又是什么?有什么不同?奇怪,好像并没有什么不同。
Unity 的确不适用于你所说的情况,可在某些地方,使用它却很合适。学会合理的使用一个工具,而不是抓住一个缺点就否定全部。
--引用--------------------------------------------------
Dorian Deng: @b4nc
如果一定需要这样,可以考虑用 Spring.NET。没有人要求你一定使用 Unity。
--------------------------------------------------------
貌似lz容不得别人对Unity有不同看法啊。
我不是说一定要这样,而只是讨论一个基本的技术问题,既然lz都这么表态了,那我不再说了行了吧。
re: 深入 Unity 1.x 依赖注入容器之一:入门 Dorian Deng 2008-05-21 12:45
@b4nc
如果一定需要这样,可以考虑用 Spring.NET。没有人要求你一定使用 Unity。
re: 深入 Unity 1.x 依赖注入容器之一:入门 Dorian Deng 2008-05-21 12:43
@ganquan
每种方法都有其适用范围,只能说 Unity 不适用于你。
另外,不要看不起做网站的、Web 应用开发的和 B/S 架构企业应用开发的,Unity 同样适用于其他很多情况。
--引用--------------------------------------------------
Clark Zheng: @b4nc
不知所云,Unity也支持属性注入和方法调用注入呀
--------------------------------------------------------
这位仁兄,有没有看清楚讨论的重点?是非侵入式注射。
--引用--------------------------------------------------
Dorian Deng: @b4nc
需要构造函数超长的情况实质上很少出现,如果出现这种情况,就应该首先考虑是不是自己的设计上存在问题了。
--------------------------------------------------------
问题是,我现在想非侵入式注射多个对象,在Unity里只能采用这种超长的构造函数。
我一直感觉不理解的是,像属性,方法注射,在技术上完全可以做到非侵入的,为什么现在需要依赖于Unity?
或许我只能期待Untiy的下一个版本了。
加密混淆后,类名、属性名、方法名全部变了,还怎么注入?
大部分人都好像不关心加密,都是做网站的?
re: 深入 Unity 1.x 依赖注入容器之一:入门 Clark Zheng 2008-05-21 10:16
@b4nc
不知所云,Unity也支持属性注入和方法调用注入呀
re: 深入 Unity 1.x 依赖注入容器之一:入门 Dorian Deng 2008-05-21 10:00
@b4nc
需要构造函数超长的情况实质上很少出现,如果出现这种情况,就应该首先考虑是不是自己的设计上存在问题了。
>>虽然属性注入和方法调用注入必须使用特性进行声明,侵入了其他独立的组件,但这二种方法都可以用构造函数注入所代替,所以在设计上并无不可。
这种设计问题多多。
假设你需要注入n个对象,难道写一个超长的构造函数??
我就不理解,为什么spring就可以做的到,ms就做不到?这完全不存在技术上无法实现的问题。
re: 简单是一种美:提高项目成功率的一些方法 私家侦探1 2008-05-06 13:40
呵呵
@凌风
加入我们的群吧:22369239,那儿会有很多人帮助您。
我还是不清楚怎么对外部配置文件进行操作。
可以告诉我吗?
@a feng
抱歉,基于某些原因,我们不得不暂时删除该下载,请谅解。
@路过
这个例子在文档的什么地方呢?我没有找到,谢谢!
@自由、创新、研究、探索……
在 Unity 中的属性注入是可选的,设计者推荐使用构造函数注入来达到同样的目的。
当然,不排除在某些地方使用属性注入会更好。在后面的文章中我会更深入的讨论此问题。