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);
}
}