博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
切面编程AOP之Castle.Core
阅读量:4981 次
发布时间:2019-06-12

本文共 1588 字,大约阅读时间需要 5 分钟。

1.Nuget中搜索Castle.Core并install 

2.创建一个普通的类(注意类中只有标记virtual才能实现拦截 )

public class TestInterceptor    {        public virtual void MethodInterceptor()        {            Console.WriteLine("走过滤器");        }        public void NoInterceptor()        {            Console.WriteLine("没走过滤器");        }    }

3. 创建拦截器

public class Interceptor: StandardInterceptor    {        protected override void PreProceed(IInvocation invocation)        {            Console.WriteLine("调用前的拦截器, 方法名是: {0}", invocation.Method.Name);        }        protected override void PerformProceed(IInvocation invocation)        {            Console.WriteLine("拦截的方法返回时调用的拦截, 方法名是: {0}", invocation.Method.Name);        }        protected override void PostProceed(IInvocation invocation)        {            Console.WriteLine("调用后的拦截器, 方法名是: {0}", invocation.Method.Name);        }    }

4. 控制台中调用

static void Main(string[] args)        {            #region Castle.Core            ProxyGenerator generator = new ProxyGenerator(); // 实例化代理生成器            Interceptor interceptor = new Interceptor(); //实例化拦截器            //使用代理生成器创建Person对象, 而不是使用new关键字实例化            TestInterceptor test = generator.CreateClassProxy
(interceptor); Console.WriteLine("当前类型: {0}, 父类型: {1}", test.GetType(), test.GetType().BaseType); Console.WriteLine(); test.MethodInterceptor(); Console.WriteLine(); test.NoInterceptor(); Console.WriteLine(); Console.ReadLine(); #endregion }

  

转载于:https://www.cnblogs.com/zxhome/p/10730477.html

你可能感兴趣的文章
[MacOS] 终端使用ssh时,中文乱码问题处理
查看>>
向大型网站学习SEO优化之道
查看>>
JQuery中ajax的相关方法总结
查看>>
良好的实践
查看>>
CentOS6.8 4.4.43内核 安装PF_RING
查看>>
typescript知识教程
查看>>
C++ 文件保存
查看>>
【转】狗日的开源软件许可证
查看>>
序列元素互异性算法
查看>>
POJ1251 || ZOJ1406 kruskal求最小生成树
查看>>
Struts2 02--通配符
查看>>
JAVA的if用法,比如if(...){} 和if()没有大括号直接写下面的区别是什么
查看>>
linq 延迟执行带来的困扰
查看>>
LVS + Keepalived 理论
查看>>
JavaWeb学习笔记5--JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
查看>>
黑马论坛日志项目(hive、sqoop、flume、mysql)
查看>>
svn 冲突
查看>>
关于leg的那些事
查看>>
.net 获取存储过程返回值和Output输出参数值
查看>>
Java EE 学习(2):使用 IDEA 开发 最简java web
查看>>