当前位置: 首页 > news >正文

申请网站服务器/全国推广优化网站

申请网站服务器,全国推广优化网站,安卓手机app制作公司,上海外贸出口代理公司排名AspectSharp项目地址:AspectSharp - .NET AOP Framework这个项目从05年开始已经没有维护了,估计现在已经没落,现在AOP用的比较多的应该是PostSharp,PostSharp使用上应该非常方便,但前段时间已经商业化运作了&#xff0…
AspectSharp项目地址:AspectSharp - .NET AOP Framework
这个项目从05年开始已经没有维护了,估计现在已经没落,现在AOP用的比较多的应该是PostSharp,PostSharp使用上应该非常方便,但前段时间已经商业化运作了,仍提供社区版,但功能上有一些限制

AspectSharp现在网上较完整的例子比较少,从sourceforge下载项目源代码,里面有一个example项目,可以使用这个项目大致看一下AspectSharp的使用方式
因为下载的example项目运行时会出错,而AspectSharp使用的还是Castle.DynamicProxy.dll文件,我将AspectSharp做了点修改
1. 改成.Net Framework 3.5版本,因为新的Castle DynamicProxy使用的是3.5版本了
2. 改成使用Castle.DynamicProxy2.dll。主要是老的DynamicProxy中不少创建代理的方法、代理的使用方法都发生变化了,老的AspectSharp代码无法工作
修改之后,这篇文章中的例子以及AspectSharp中的Example项目都能正常运行,从这里下载附件可以运行这篇文章中的示例程序。但是因为新的DynamicProxy中拦截器接口机制的改变,无法确保我对AspectSharp的修改一定是正确的,因此这个下载仅用于演示目的

codeproject上面有篇.NET下开源AOP框架的对比文章:Rating of Open Source AOP Frameworks in .Net。AspectSharp在里面的评价很低,最好的是PostSharp,其次是Unity跟Spring.NET

引用命名空间:
using AopAlliance.Intercept;
using AspectSharp.Builder;
//测试用的目标类
public class RequestProcessor
{//需要是virtual的方法才能拦截public virtual void Process(){Console.WriteLine("Hello AspectSharp");}
}
//记录日志用的拦截器
public class LoggerInterceptor : IMethodInterceptor
{public object Invoke(IMethodInvocation invocation){Console.WriteLine("Before {0} on {1}", invocation.Method.Name, invocation.Method.DeclaringType);object returnVal = invocation.Proceed();Console.WriteLine("After {0} on {1}", invocation.Method.Name, invocation.Method.DeclaringType);return returnVal;}
}
测试代码如下:
static void Main(string[] args)
{StandardCall();AopCall();Console.ReadKey();
}
//正常的调用,不使用AOP拦截
private static void StandardCall()
{RequestProcessor rp = new RequestProcessor();rp.Process();Console.WriteLine();
}
//使用AOP拦截后的调用
private static void AopCall()
{//AOP的拦截配置,这些配置可以放入配置文件中//import: 导入命名空间,比如拦截器所在的命名空间//aspect: 定义一个拦截的aspect, for指令用于指示需要拦截的类所在的命名空间//pointcut: 定义一个拦截点,使用method指定需要拦截的方法,还可以使用property指定需要拦截的属性,//    或者使用propertyread、propertywrite等用于拦截属性的getter、setter操作,//    被拦截的方法需要是virtual类型的,否则无法实现拦截(跟Castle Dynamic Proxy机制相关)//advice: 定义拦截器string config = @"
import AspectSharp.Test
aspect processor for [AspectSharp.Test] pointcut method(* Process())advice(LoggerInterceptor)end
end";AspectLanguageEngineBuilder engineBuilder = new AspectLanguageEngineBuilder(config);AspectEngine engine = engineBuilder.Build();//使用AspectSharp包装,AspectSharp将根据配置生成代理对象,在代理对象上使用拦截器实现AOP拦截处理RequestProcessor rp = engine.WrapClass(typeof(RequestProcessor)) as RequestProcessor;rp.Process();Console.WriteLine();
}
运行结果如下:
    

从上面可以看到,感觉AspectSharp AOP唯一有点新意的地方就是使用了antlr来定义AOP的配置语言,其实使用动态代理,或者Post Compilation的方式自己实现一下拦截也是比较容易的事情。AspectSharp中使用AOP的地方也还得采取措施对AspectEngine进行包装,整体来看这个AOP对代码不是完全透明的 上面只是简单演示了一下AspectSharp的基本用法,因为使用了Castle.DynamicProxy实现AOP,因此AspectSharp也支持mixins等

转载于:https://www.cnblogs.com/RicCC/archive/2010/03/31/aspectsharp-aop.html

http://www.jmfq.cn/news/4886083.html

相关文章:

  • 工商网企业信息查询/长沙百度推广排名优化
  • 电子商务网站开发开发背景/seo外包公司专家
  • 西安公司注册网站/短链接购买
  • 什么网站可以做高三英语试题/爱网站关键词查询工具
  • 黑马/新乡百度关键词优化外包
  • 大庆网站开发/seo快速收录快速排名
  • 如何使用好单库选品库做网站/市场调研分析报告模板
  • 怎么做网站的域名解析/长春建站服务
  • 什么网站合适做流量/今天今日头条新闻
  • 有个网站做彩盒的/外贸接单网站
  • 教学互动网站开发背景/企业网站建设方案范文
  • 有保障的广州网站建设/茂名seo快速排名外包
  • wx网站开发/重庆seo优化推广
  • 昆明专业做网站多少钱/长沙百度关键词排名
  • 温州市网站制作多少钱/广告联盟官网入口
  • 提高网站排名怎么做/武汉百度开户代理
  • 做论坛网站怎么样备案/百度关键词推广网站
  • 如何创建网站系统教程/搜索引擎优化的技巧有哪些
  • 品牌网站建设小蝌蚪1/抖音怎么运营和引流
  • 高温热泵/枣庄网络推广seo
  • 快速网站建设公司/售卖链接
  • 温州 网站开发/百度一下电脑版
  • 哪些网站可以做花店推广/重庆镇海seo整站优化价格
  • 有什么做Java笔试题的网站/有实力的网站排名优化软件
  • 十堰网站建设怎么样/seo课程简介
  • 企业管理平台登录/广州seo推广运营专员
  • 做网站用什么程序好/深圳全网推广托管
  • 做公司的网站大概多少钱/品牌运营推广方案
  • 网站做等保是按照什么定级别的/手机seo百度点击软件
  • 江苏省建设工程注册中心网站/网站运营方案