zoukankan      html  css  js  c++  java
  • 切面编程AOP之Castle.Core

    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<TestInterceptor>(interceptor);
                Console.WriteLine("当前类型: {0}, 父类型: {1}", test.GetType(), test.GetType().BaseType);
                Console.WriteLine();
                test.MethodInterceptor();
                Console.WriteLine();
                test.NoInterceptor();
                Console.WriteLine();
                Console.ReadLine();
                #endregion
            }
    

      

  • 相关阅读:
    我要当伴娘
    Oracle SCN与时间的相互转换
    解决物理standby 归档日志损坏ORA00334
    Oracle块修改跟踪功能
    八月九日学习报告
    八月十三日学习报告
    八月七日学习报告
    八月十二日学习报告
    八月六日学习报告
    八月十日学习报告
  • 原文地址:https://www.cnblogs.com/zxhome/p/10730477.html
Copyright © 2011-2022 走看看