AOP中应用有多种方式,
以下我仅针对.NET Core 中动态代理的使用。
.NET Core 中大部分的第三方IOC容器,基本都支持了动态代理实现。
- Autofac 不多说应该是用的最多的第三方IOC容器了,通过Castle.Core实现的动态代理。
- AspectCore 圈子里的柠檬大佬的。
- Dora 蒋老师的一个轻量级IOC容器,也实现了动态代理。
- Castle.core 比较经典的IOC容器,也包含了动态代理。
- Spring.NET 应该很少用人用了吧,毕竟不是.net 圈子的,里面也实现了动态代理
接下来我会以不依赖第三方库的方式下实现动态代理,了解基本的实现原理。
System.Reflection.DispatchProxy
可以看到 DispatchProxy是一个抽象类,有两个方法,分别是
public static T Create<T, TProxy>() where TProxy : DispatchProxy; protected abstract object? Invoke(MethodInfo? targetMethod, object?[]? args);
Create 是一个静态方法,用于创建一个代理类实例,类型T 表示被代理的类, TProxy 表示代理类
Invoke 是对执行方法调用,可在此处添加自定义的行为。
我们写一个简单的demo
标签:Core,代理,AOP,NET,动态,IOC From: https://www.cnblogs.com/dyhuang/p/16646189.html