AOP
// 最开始我们都是OPO编程(也就是面向过程编程)
// 后来转变成为了OOP编程 (也就是面向对象编程)但是在OOP的内部实际上也还是面向过程(OPO)
// OOP是对扩展开放。对修改关闭.因为OOP的最小单位实际是类。所以扩展实现功能的时候 百分之八十都是 类与类的替换 来完成的
// 比如工厂, IOC DI注入 等
// 如果因为扩展实现功能的时候在类的内部进行修改的话,就违背了,对扩展开放,对修改关闭的原则了。是不允许的。
// 可能通过实现不同类来完成需求,但是需求不是一层不变的 可能会有很多个不同的需求.
// 比如说 我要在方法内 加上try cath 加上日志 等扩展功能的话,实际上我们可以通过新建类,把这些加上去。
// 但是如果有一天 我需要对这些扩展功能实现 随意增减的话。可能就搞不定了
// 所以在不破坏现有封装,又能扩展新功能的基础上 就是面向切面编程 AOP
ProxyGenerator proxyGenerator = new ProxyGenerator();
CustomAttributeInterceptor customAttribute = new CustomAttributeInterceptor();
IDBHelper dBHelper = new SqlServerDBHelper();
var iDbHelperProxy= proxyGenerator.CreateInterfaceProxyWithTarget<IDBHelper>(dBHelper, customAttribute);
Console.WriteLine("当前类型:{0},父类型:{1}", iDbHelperProxy.GetType(), iDbHelperProxy.GetType().BaseType);
Console.WriteLine();
iDbHelperProxy.Save(new UserInfo()
{
Account = "12",
Password = "123123",
Name = "哥"
});

浙公网安备 33010602011771号