Emit学习-实战篇-实现一个简单的AOP框架(二)
2009-03-31 21:42
856 查看
已经9点了,就不废话了,直接开讲,今天就简单的介绍下框架中用到的一些接口和属性。昨天把我们关注的切面分成了三类,现在给出这3个接口的定义:
AspectAttribute
[Flags()]
public enum AspectTypes
{
PreProcess = 1,
ExceptionHandler = 2,
PostProcess = 4
}
/// <summary>
/// 描述切面信息的属性
/// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class AspectAttribute : Attribute
{
private AspectTypes _aspectType;
public AspectTypes AspectType
{
get { return _aspectType; }
}
public AspectAttribute(AspectTypes aspectType)
{
_aspectType = aspectType;
}
}
首先是一个枚举类,用来表示方法要使用的切面类型,使用了Flags属性标识,方便之后进行位操作;然后是继承自Attribute的属性类,[AttributeUsage(AttributeTargets.Method)]属性表示这个属性只能用在方法上,这正是我们需要的效果,关于属性的定义和使用大家应该并不陌生吧?我就不多说了,接下来在客户端就可以用如下的方式进行使用:
[Aspect(AspectTypes.PreProcess | AspectTypes.ExceptionHandler)]
public virtual
void Test1(string
num)
这就表示这个Test1方法需要进行预处理和异常处理,而具体的处理信息的定义则放在配置文件中,这部分将在明天讲到。最后在反射中可以用如下的方式判断某个方法是否需要进行处理if ((aspectType & AspectTypes.PostProcess) == AspectTypes.PostProcess)(感觉这么写很繁琐,由于是第一次对枚举进行位运算,也不知道有没有更简便的方法,希望知道的能给与指点)。好啦,今天就到此为止!
AspectAttribute
[Flags()]
public enum AspectTypes
{
PreProcess = 1,
ExceptionHandler = 2,
PostProcess = 4
}
/// <summary>
/// 描述切面信息的属性
/// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class AspectAttribute : Attribute
{
private AspectTypes _aspectType;
public AspectTypes AspectType
{
get { return _aspectType; }
}
public AspectAttribute(AspectTypes aspectType)
{
_aspectType = aspectType;
}
}
首先是一个枚举类,用来表示方法要使用的切面类型,使用了Flags属性标识,方便之后进行位操作;然后是继承自Attribute的属性类,[AttributeUsage(AttributeTargets.Method)]属性表示这个属性只能用在方法上,这正是我们需要的效果,关于属性的定义和使用大家应该并不陌生吧?我就不多说了,接下来在客户端就可以用如下的方式进行使用:
[Aspect(AspectTypes.PreProcess | AspectTypes.ExceptionHandler)]
public virtual
void Test1(string
num)
这就表示这个Test1方法需要进行预处理和异常处理,而具体的处理信息的定义则放在配置文件中,这部分将在明天讲到。最后在反射中可以用如下的方式判断某个方法是否需要进行处理if ((aspectType & AspectTypes.PostProcess) == AspectTypes.PostProcess)(感觉这么写很繁琐,由于是第一次对枚举进行位运算,也不知道有没有更简便的方法,希望知道的能给与指点)。好啦,今天就到此为止!
相关文章推荐
- Emit学习-实战篇-实现一个简单的AOP框架(一)
- Emit学习-实战篇-实现一个简单的AOP框架(三)
- Emit实现简单的C# AOP框架
- .Net中的Interception--一个简单的AOP框架学习
- AOP学习-基于Emit和Attribute的简单AOP实现
- aop框架的一个简单实现
- AOP学习-基于Emit和Attribute的简单AOP实现
- .Net中的Interception--一个简单的AOP框架学习
- 一个简单的AOP框架学习
- TensorFlow:实战Google深度学习框架(二)实现简单神经网络
- 黑马程序员--代理+AOP--实现一个类似spring的可配置的简单AOP框架
- Django框架学习笔记(10.基于ORM实现简单的用户登录)
- 一个简单图形界面框架XYGui的设计与实现 (五)
- go实现一个简单的游戏服务器框架(lotou)基本设计
- [action]tensorflow深度学习实战 (4) 实现简单卷积神经网络
- 一个简单的rpc框架实现(一)
- Cocos2D-X学习10:实战练习——一个简单的钢琴
- go实现一个简单的游戏服务器框架(lotou)网络通信
- [shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
- 一个简单RPC框架是如何炼成的(IV)——实现RPC消息的编解码