【.NET中AOP的实现方案】静态代理
来源:互联网 发布:独立域名 二级域名 编辑:程序博客网 时间:2024/05/18 17:28
Spring AOP 应该是比较出名的了,今天说的是C#里的AOP,C#的AOP实现的方式有很多种,现在就先介绍静态代理的实现方案;
模拟场景:我们在删除用户,或者更新用户的时候进行数据原始备份,这样的话需要在删除操作进行之前进行一些数据相应的操作,但是我们又不想在删除操作里面做一些与删除无关的操作,这样使用AOP就解决这个问题了;更新操作也一样。
下面是示例代码(省略引用):
1、首先是实体类
namespace AOP_Test1{ //实体类 public class User { public int id { get; set; } public String name { get; set; } public String password { get; set; } //重写方法 public override string ToString() { return "id:" + id + ";name:" + name + ";password:" + password; } }}
2、数据操作接口
namespace AOP_Test1{ //接口,数据操作 public interface IUser { void delete(User user); void update(User user); }}
3、接口实现
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AOP_Test1{ //IUser接口实现 public class IUserImpl:IUser { public void delete(User user) { System.Console.WriteLine("删除用户"); } public void update(User user) { System.Console.WriteLine("更新用户"); } }}
4、对IUser进行装饰
namespace AOP_Test1{ //IUser装饰类 public class IUserDecorator : IUser { public IUser iuser { get; set; } public IUserDecorator(IUserImpl iUserImpl) { iuser = iUserImpl; } //删除 public void delete(User user) { beforeDelete(user); iuser.delete(user); afterDelete(); } protected void beforeDelete(User user) { Console.WriteLine(DateTime.Now + ":删除之前进行数据备份:"); Console.WriteLine("备份数据:" + user.ToString()); } protected void afterDelete() { Console.WriteLine("删除操作完成."); } //更新 public void update(User user) { beforeUpdate(user); user.name = "TanWeijie"; iuser.update(user); afterUpdate(user); } protected void beforeUpdate(User user) { Console.WriteLine(DateTime.Now + ":更新之前进行数据备份:"); Console.WriteLine("更新前数据:" + user.ToString()); } protected void afterUpdate(User user) { Console.WriteLine("更新操作完成."); Console.WriteLine("更新后数据:" + user.ToString()); } }}
5、测试:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AOP_Test1{ class Program { static void Main(string[] args) { User user = new User(); user.id = 1; user.name = "Tan"; user.password = "123456"; IUser iuser = new IUserDecorator(new IUserImpl()); iuser.delete(user); Console.WriteLine(); iuser.update(user); } }}
6、测试结果:
【敬请批评指正】
- 【.NET中AOP的实现方案】静态代理
- AOP系列:.NET中AOP的几种实现方案
- .NET中AOP的几种实现方案
- .NET中AOP的几种实现方案
- .NET中AOP的几种实现方案
- Spring_AOP_Proxy AOP静态代理的实现
- Spring_AOP_Proxy AOP静态代理的实现 .
- java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总
- .NET中通过代理实现面向方面编程(AOP)
- spring(AOP)静态代理、JDK动态代理、cglib实现代理
- 一个基于Spring.net AOP实现的安全方案
- Java中静态、动态代理的实现
- Web项目中静态代理和动态代理为基础的面向切面编程AOP
- Web项目中静态代理和动态代理为基础的面向切面编程AOP
- 在.Net中关于AOP的实现
- 基于SAML的单点登录.NET代理端实现方案
- 第37天(就业班) 静态代理与动态代理、oglib代理、手动实现aop编程、注解实现AOP编程、aop相关的几个注解、xml实现aop、切入点表达式、spring对aop模式
- 代理实现spring的AOP
- 闪回版本查询
- 纯CSS 多行文本发出用省略号
- 设备相关-硬盘
- 河床
- wubi 离线安装
- 【.NET中AOP的实现方案】静态代理
- 常用网址
- Oracle虚拟列
- 16进制 10进制 BCD码之间的转换
- 一份C++面试题和答案
- Java中正则表达式的使用
- ARM926EJ-S/ARM920T 协处理器 CP14, CP15 详解
- android启动过程详细讲解
- Android之多媒体--使用MediaPlayer播放音频