切面编程AOP之Castle.Core
1.Nuget中搜索Castle.Core并install
2.创建一个普通的类(注意类中只有标记virtual才能实现拦截 )
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。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 }

更多精彩