对EnterLib有所了解的人应该知道,其中有一个名叫Policy Injection的AOP框架;而整个EnterLib完全建立在另一个叫作Unity的底层框架之上,我们可以将Unity看成是一个IoC的框架。对于一个企业应用来说说,AOP和IoC是我们进行逻辑分离和降低耦合度最主要的方式,而将两者结合起来具有重要的现实意义。
到底将IoC和AOP进行整合后,会对编程但来怎样的影响,我写了一个简单的例子(你可以从这里下载该实例)。假设我现在有两个模块,分别称为Foo和Bar,通过如下同名的类来表示。Foo和Bar具有各自的接口,分别为IFoo和IBar。简单起见,我在两个接口中定义了相同的方法:DoSomething。在Foo中,具有一个类型为IBar的只读属性,而DoSomething的实现就是通过调用该属性的同名方法实现。
interface IFoo
2: {
void DoSomething();
4: }
5:
interface IBar
7: {
void DoSomething();
9: }
10: [FooCallHandler]
class Foo : IFoo
12: {
private set; }
public Foo(IBar bar)
this.Bar = bar; }
void DoSomething()
17: {
this.Bar.DoSomething();
19: }
20: }
21: [BarCallHandler]
class Bar : IBar
23: {
void DoSomething()
25: {
);
27: }
28: }