using System.Reflection; using System.Threading.Tasks; namespace NCC.Reflection { /// /// 异步代理分发类 /// public abstract class AspectDispatchProxy { /// /// 创建代理 /// /// /// /// public static T Create() where TProxy : AspectDispatchProxy { return (T)AspectDispatchProxyGenerator.CreateProxyInstance(typeof(TProxy), typeof(T)); } /// /// 执行同步代理 /// /// /// /// public abstract object Invoke(MethodInfo method, object[] args); /// /// 执行异步代理 /// /// /// /// public abstract Task InvokeAsync(MethodInfo method, object[] args); /// /// 执行异步返回 Task{T} 代理 /// /// /// /// /// public abstract Task InvokeAsyncT(MethodInfo method, object[] args); } }