说到AOP在cnblogs上也有不少关于实现的文章,所以这次就不描述具体实现;有兴趣可以下载组件源码了解,当然组件只是一个初型并不会有什么强大的功能,也可能存在比较多的问题。
这几天由于项目移交给测试人员测试,因此空闲的时间比较多;为了不浪费这些时间所以想到用Remoting透明代理机制做一个简单的AOP组件,顺便也学习Remoting中透明代理的实现和运用。刚开始做还是挺痛头的,因为本机的MSDN并没有充足的帮助。于是就到cnblogs和Google搜了一下,找到一编不错的文章:http://www.rsdn.ru/article/dotnet/cntxtvsrealproxy.xml。把资料整理和清楚一下思路就开始干活。实现过程大概花了一个工作日吧,主要实现了以下对象:
AopProxyAttribute派生于ProxyAttribute
AopRealProxyy派生于RealProxy
/// <summary>
/// 拦载对象描述接口
/// </summary>
public interface ICutiner
{
/// <summary>
/// 执行方法的源对象
/// </summary>
object Source
{
get;
}
/// <summary>
/// 执行方法的参数集
/// </summary>
object[] Args
{
get;
}
/// <summary>
/// 方法执行前拦载过程
/// </summary>
void Executing();
/// <summary>
/// 方法执行后拦载过程
/// </summary>
/// <param name="returnvalue">返回值</param>
/// <returns>处理后的返回</returns>
object Executed(object returnvalue);
/// <summary>
/// 实始化拦载对象
/// </summary>
/// <param name="source"></param>
/// <param name="args"></param>
void initialize(object source,object[] args);
/// <summary>
/// 执行方法错误信息
/// </summary>
Exception Error
{
共有 0 位网友发表了评论,得分 0 分,平均 0 分 查看完整评论