? ?
?
? ?
动态方法拦截(AOP)的N种解决方案
?
? ?
?
?
?
?
?
?
?
? ? ?
?
?
?
?
?
AOP的本质是方法拦截(将针对目标方法调用劫持下来,进而执行执行的操作),置于方法拦截的实现方案,不外乎两种代码注入类型,即编译时的静态注入和运行时的动态注入,本篇文章列出了几种常用的动态注入方案。这篇文章的目标并不是提供完整的AOP框架的解决方案,而是说明各种解决方案后面的原理,所以我们提供的实例代码会尽可能简单。为了确定拦截操作是否执行,我们定义了如下这个Indicator类型,我们的拦截操作会将其静态属性Injected属性设置为True,我们演示的代码最终通过这个属性来确定拦截是否成功。[源代码从这里下载]
public static class Indicator{ public static bool Injected { get; set; }}
一、IL Emit(接口)
IL Emit是实现AOP的首选方案。如果方法调用时针对接口完成,我们可以生成一个代理类型来封装对象,并且这个代理类型同时实现目标接口,那么只要我们能够将针对目标对象的方法调用转换成针对代理对象的调用,就能实现针对目标对象的方法拦截。举个简单的例子,Foobar实现了IFoobar接口,如果我们需要拦截接口方法Invoke,我们可以生成一个FoobarPr
您可能关注的文档
最近下载
- 毕业论文:甘南藏族民俗风情主题酒店经营策划研究.doc VIP
- 基层干部激励机制存在的问题及原因分析.docx VIP
- 《文件及记录控制程序》考试试题及答案.docx VIP
- BS EN 50317-2012铁路设备 — 集电系统 — 架式受电弓和架空接触线之间动态相互作用的要求及测量有效性(中文版翻译).doc VIP
- 中国红十字会 创伤救护止血.pptx VIP
- 计算机程序设计员理论知识考核要素细目表三级(征求意见稿) .pdf VIP
- 低空经济无人机物流网络规划技术方案.docx
- 绿化项目养护人员配备计划及岗位实施方案.docx VIP
- 基层干部激励机制存在的问题及原因分析.docx VIP
- 血气分析与酸碱平衡.ppt VIP
原创力文档

文档评论(0)