使用Unity实现AOP

前提

引用以下文件

Microsoft.Practices.ObjectBuilder2.dll

Microsoft.Practices.Unity.dll

Microsoft.Practices.Unity.Configuration.dll

Microsoft.Practices.Unity.Interception.dll

Microsoft.Practices.Unity.Interception.Configuration.dll

Microsoft.Practices.Unity.StaticFactory.dll

可以从网站http://unity.codeplex.com/下载

本文中的实现类继承于IOutput接口

1: public interface IOutput {
2:   void Output(int  x);
3: }

实现效果

我有两个方法可以输出字符串, 调用IOutput的实现类来输出的,如:

1: class OutputImplement2 : IOutput {
2:   public void  Output(int x) {
3:     Console.WriteLine("output:{0}", x);
4:    }
5: }

调用它即在Main函数中

1: var op2=new OutputImplement2();
2: op2.Output(22);

即可,而AOP的作用是通过其它代码,向op2.Output方法执行前或执行后注入其它执行 过程即最后形成的结果可能是:

这里除了箭头所指的一句外其它的都是注入进去这个方法的。

时间: 2025-01-01 14:11:51

使用Unity实现AOP的相关文章

使用Unity 实现 AOP

前提 引用以下文件 Microsoft.Practices.ObjectBuilder2.dll Microsoft.Practices.Unity.dll Microsoft.Practices.Unity.Configuration.dll Microsoft.Practices.Unity.Interception.dll Microsoft.Practices.Unity.Interception.Configuration.dll Microsoft.Practices.Unity.S

面向方面的编程、侦听和Unity 2.0

毫无疑问,面向对象是一种主流编程模式,当涉及到将某个系统分割为组件并通过组件来描述过程时,这种模式占有优势. 当处理某组件的业务特定关注点时,面向对象 (OO) 模式同样占有优势. 但是,当涉及到处理横切关注点时,OO 模式不再有效. 一般来说,横切关注点是一个在系统中影响多个组件的关注点. 为了最大限度地重用复杂的业务逻辑代码,您通常倾向于围绕系统的核心和主要业务功能设计类的层次结构. 但其他横切类层次结构的非业务特定关注点该如何实现? 缓存.安全和日志记录等功能在什么位置适合? 很可能就是在

asp.net mvc应用架构的思考--Unity的应用及三层代码

  最近要做一个项目,和国外的架构师聊过之后.对方提到了他准备采用asp.net mvc, jquery, Unity 等技术来代替老的技术: 如asp.net web form. 他请我帮他想一些关于架构的东西.一直以来,关于asp.net mvc应用的架构,有一些想法.正好借这个机会写出来.资深的人士可能已经知道了,就当是复习吧.欢迎发表意见.指出不足. Unity的应用 Unity出来已经有几年了.早几年的1.2版就可以实现这里所说的功能.目前最新稳定版是2.1.正在开发的3.0也许会给我

我心中的核心组件(可插拔的AOP)~第十三回 实现AOP的拦截组件Unity.Interception

说在前 本节主要说一下Unity家族里的拦截组件,对于方法拦截有很多组件提供,基本上每个Ioc组件都有对它的实现,如autofac,它主要用在orchard项目里,而castle也有以拦截的体现,相关可以看我的Castle~实现IoC容器这篇文章,而今天主要说一个Unity里的方法拦截的实现,事实上本篇文章是对第二回 缓存拦截器的一个扩展和补充,对于unity这东西在微软的Nlayer项目里有所体现,它是基于DDD构架的,无论在架构选型还是技术选型上都很超前,也都结合了很大微软高手的心血,可读性

Enterprise Library深入解析与灵活应用(7):再谈PIAB与Unity之间的集成

在EnteLib中,PIAB(Policy Injection Application Block)和Unity的定位 是轻量级的AOP框架和IoC容器(Container).通过PIAB,我们可以将一些业务无 关的crosscutting concern定义于相应的CallHandler中,通过Attribute声明或 者配置应用到承载业务逻辑的目标方法上.而通过Unity提供的IoC容器(或者DI 容器),即UnityContainer,很好地实现了依赖的动态注入,从而实现了组件之 间.模块

Enterprise Library深入解析与灵活应用(3):倘若将Unity、PIAB、Exception Ha

Enterprise Library深入解析与灵活应用(3):倘若将Unity.PIAB.Exception Handling引入MVP模式 最近在做一个Smart Client Software Factory的项目.熟悉SCSF或者CAB的都应该很清楚MVP这种设计模式.MVP是MVC的一种变体,View和 Mode分别关注于UI的呈现和业务模型,View和Mode完全分离,View通过Presenter实现对业务模型的访问,Presenter"间接"地调 用View实现对UI的操

Enterprise Library深入解析与灵活应用(1):通过Unity Extension实现和Poli

Enterprise Library深入解析与灵活应用(1):通过Unity Extension实现和Policy Injection Application Block的集成 Enterprise Library是微软P&P部门开发的众多Open source框架中的一个,最新的版本已经出到了4.0.由于接触Enterprise Library 已经有很长的一段时间,在实际的项目中使用的频率也很高.对此有了一些积累,希望通过这个新的系列和广大网友一起分享和交流.本系列 假设读者已经对Enter

Unity(六):使用场景Ⅲ:用于依赖注入(上)

有关依赖注入 什么是依赖注入,我想这个问题我在这里说就不大合适了,所以还是推荐一下大师的文章.之前的文章也提到过,"Martin Fowler的Inversion of Control Containers and the Dependency Injection pattern 是不得不推荐的,当然,如果读起来比较费劲的话,吕震宇的你真的了解Ioc与AOP吗?系列也是不错的参考". 这里要多说一句的是,依赖注入(Dependency Injection)和控制反转(Inversion

Unity(一):从ObjectBuilder说起

Unity的Release又拖期了,不过对于patterns & practices的fans来说,应该习以为常了. 不少大牛已经开始深入岩洞探险了,向他们致敬:)鉴于之前的CTP或者weekly drops实在是不够稳定,这也就成了我站在洞口静观其变的理由...ok,说白了就是懒惰的借口. 不过这并不妨碍我们先聊聊ObjectBuilder.我们需要一些预备知识,如果对于IOC还不是很清楚的话,还是应该在IOC的理解花点时间.Martin Fowler的Inversion of Control