AOP现在是如火如荼,DotNet下的AOP框架也不少,但是如果你仅仅是需要写日志、权限管理这样的不是十分庞大规模的模块的话,真的是没有必要去引用一个或多个dll,所谓的“没有你在,我自己来”,也大概就是这样吧。
现在通用的做法一般有两种:一个是上下文消息传递,一个是利用代理RealProxy,这里的做法是前面一种。
首先定义一个Attribute。
 1利用Attribute实现AOP    [AttributeUsage(AttributeTargets.Class)]
 2利用Attribute实现AOP    public class LogPointer : ContextAttribute
 3    }
然后,把写日志这件事情加入到上下文中。
 1利用Attribute实现AOP    public class LogHandler : IContextProperty, IContributeObjectSink
 2    }
最后,还需要在消息链中处理消息。
 1利用Attribute实现AOP    public class LogTrack : IMessageSink
 2    }
这样子,一个写日志的AOP实现就完成了。
我们来测试一下:
 1利用Attribute实现AOP    [LogPointer("Log")]
 2利用Attribute实现AOP    public class Test:ContextBoundObject
 3    }
需要注意的是,代码中红色部分是必须的。
到这里,就大功告成了,当然,实际应用中,你可以把这些东西抽象封装一下,让它更具有通用性。

写完了这篇东西,去百度搜索了一下,原来这样子的实现简直太多了,给大家介绍几个:
1)http://www.brucezhang.com/articles/256909.html
这是一个园里的大牛写的,内容很丰富。
2)http://msdn.microsoft.com/msdnmag/issues/02/03/AOP/
这是MSDN2002年的一篇文章。
3)http://www.cs-open.com/sort/1.html
一些开源的AOP框架。

以上,希望对大家有所帮助。

相关文章:

  • 2021-12-13
  • 2022-12-23
  • 2021-08-17
  • 2022-01-03
  • 2022-12-23
  • 2021-10-23
  • 2022-12-23
  • 2021-09-23
猜你喜欢
  • 2021-10-15
  • 2021-07-16
  • 2022-02-19
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2021-06-22
相关资源
相似解决方案