各种IoC框架下实现AOP

.Net AOP(五) 各种IoC框架下实现AOP

利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
主要功能
日志记录,性能统计,安全控制,事务处理,异常处理等等。
主要意图
将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码
一个Castle的实现

首先下载Castle.Windsor.dll

自定义Interceptor
public class MyInterceptor : IInterceptor
    {
        public void Intercept(IInvocation invocation)
        {
            PreProceed(invocation);
            invocation.Proceed();
            PostProceed(invocation);
        }
        public void PreProceed(IInvocation invocation)
        {
            Console.WriteLine("方法执行前");
        }

        public void PostProceed(IInvocation invocation)
        {
            Console.WriteLine("方法执行后");
        }
    }

用户注册接口和实现
public interface IUserProcessor
    {
        void RegUser(User user);
    }

    public class UserProcessor : IUserProcessor
    {
        public virtual void RegUser(User user)
        {
            Console.WriteLine("用户已注册。Name:{0},PassWord:{1}", user.Name, user.PassWord);
        }
    }
客户端调用
public class Client
    {
        public static void Run()
        {
            try
            {
                ProxyGenerator generator = new ProxyGenerator();
                MyInterceptor interceptor = new MyInterceptor();
                UserProcessor userprocessor = generator.CreateClassProxy<UserProcessor>(interceptor);
                User user= new User() { Name = "lee", PassWord = "123123123123" };
                userprocessor.RegUser(user);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
原文地址:https://www.cnblogs.com/jameslif/p/6955969.html