当前位置: 首页 > news >正文

建设钓鱼网站手机网站怎么dw做

建设钓鱼网站,手机网站怎么dw做,做影视网站 片源从哪里来,私人订制NET Core的AOP实施方法1 DispatchProxy NET Framework的AOP实施方法1 ContextBoundObject NET Framework的AOP实施方法2 RealProxy 源码见Github DispatchProxy NET Core DispatchProxy 是一个在 .NET 框架中引入的概念#xff0c;特别是在 C# 语言中。它是一种特殊类型的代…NET Core的AOP实施方法1 DispatchProxy NET Framework的AOP实施方法1 ContextBoundObject NET Framework的AOP实施方法2 RealProxy 源码见Github DispatchProxy NET Core DispatchProxy 是一个在 .NET 框架中引入的概念特别是在 C# 语言中。它是一种特殊类型的代理用于在运行时动态地分派方法调用到不同的实现。DispatchProxy 类位于 System.Runtime.Remoting.Proxies 命名空间中并且是 RealProxy 类的一个派生类。 以下是 DispatchProxy 的一些关键点 动态分派DispatchProxy 允许开发者在运行时决定将方法调用分派给哪个对象。这使得可以在不修改现有代码的情况下动态地改变对象的行为。 透明代理DispatchProxy 是一种透明代理这意味着客户端代码不需要知道代理的存在。客户端代码可以直接调用方法就像它们直接调用实际对象一样。 类型安全尽管 DispatchProxy 是动态分派的但它仍然保持类型安全。代理对象可以被强制转换为任何接口类型并且只有那些接口上的方法调用才会被分派。 创建自定义代理开发者可以通过继承 DispatchProxy 类并重写 Invoke 方法来创建自己的代理。在 Invoke 方法中开发者可以决定如何分派方法调用例如基于调用的方法名、参数或其他逻辑。 性能开销由于 DispatchProxy 涉及到运行时的动态分派因此可能会有一些性能开销。因此它更适合于那些性能不是主要关注点的场景。 用途DispatchProxy 可以用于多种场景包括但不限于日志记录、性能监控、事务管理、安全性检查、Mock对象的创建等。 相较于RealProxy和ContextBoundObjectDispatchProxy的实现更加便捷 创建日志拦截器 public class LoggingDecoratorT : DispatchProxy {private T _decorated;protected override object Invoke(MethodInfo methodInfo, object[] args){try{LogBefore(methodInfo, args);var result methodInfo.Invoke(_decorated, args);if (methodInfo.IsAsyncMethod()){if (methodInfo.ReturnType typeof(Task)){var task (Task)result;var val InternalAsyncHelper.AwaitTaskWithPostActionAndFinally(task,async () {Debug.WriteLine($Task {methodInfo.Name} completed);}, /*成功时执行*/ex {if (ex ! null){Debug.WriteLine($Task {methodInfo.Name} threw an exception: {ex.ToString()});}});return val;}else{var returnTypeGenericTypeArgument methodInfo.ReturnType.GenericTypeArguments[0];var val InternalAsyncHelper.CallAwaitTaskWithPostActionAndFinallyAndGetResult(returnTypeGenericTypeArgument,result,async (o) {Debug.WriteLine($Task {methodInfo.Name} completed with result {o});}, /*成功时执行*/ex {if (ex ! null){Debug.WriteLine($Task {methodInfo.Name} threw an exception: {ex.ToString()});}});return val;}}else{LogAfter(methodInfo, args, result);}return result;}catch (Exception ex) when (ex is TargetInvocationException){LogException(ex.InnerException ?? ex, methodInfo);throw ex.InnerException ?? ex;}}public static T Create(T decorated){object proxy CreateT, LoggingDecoratorT();((LoggingDecoratorT)proxy).SetParameters(decorated);return (T)proxy;}private void SetParameters(T decorated){if (decorated null){throw new ArgumentNullException(nameof(decorated));}_decorated decorated;}private void LogException(Exception exception, MethodInfo methodInfo null){Console.WriteLine($Class {_decorated.GetType().FullName}, Method {methodInfo.Name} threw exception:\n{exception});}private void LogAfter(MethodInfo methodInfo, object[] args, object result){Console.WriteLine($Class {_decorated.GetType().FullName}, Method {methodInfo.Name} executed, Output: {result});}private void LogBefore(MethodInfo methodInfo, object[] args){Console.WriteLine($Class {_decorated.GetType().FullName}, Method {methodInfo.Name} is executing);} }代理异步的帮助类 internal static class InternalAsyncHelper {public static bool IsAsyncMethod(this MethodInfo method){return method.ReturnType typeof(Task)|| method.ReturnType.IsGenericType method.ReturnType.GetGenericTypeDefinition() typeof(Task);}public static async Task AwaitTaskWithPostActionAndFinally(Task actualReturnValue,FuncTask postAction,ActionException finalAction){Exception exception null;try{await actualReturnValue;await postAction();}catch (Exception ex){exception ex;}finally{finalAction(exception);}}public static async TaskT AwaitTaskWithPostActionAndFinallyAndGetResultT(TaskT actualReturnValue,Funcobject, Task postAction,ActionException finalAction){Exception exception null;try{var result await actualReturnValue;await postAction(result);return result;}catch (Exception ex){exception ex;throw;}finally{finalAction(exception);}}public static object CallAwaitTaskWithPostActionAndFinallyAndGetResult(Type taskReturnType,object actualReturnValue,Funcobject, Task action,ActionException finalAction){//AwaitTaskWithPostActionAndFinallyAndGetResulttaskReturnType(actualReturnValue, action, finalAction);return typeof(InternalAsyncHelper).GetMethod(AwaitTaskWithPostActionAndFinallyAndGetResult,BindingFlags.Public | BindingFlags.Static).MakeGenericMethod(taskReturnType).Invoke(null, new object[] { actualReturnValue, action, finalAction });} }声明及调用示例 public interface ICalculator {int Add(int a, int b);Taskint AddAsync(int a, int b); } public class Calculator : ICalculator {public int Add(int a, int b){//throw new NotImplementedException(This method is not implemented. sorry!);return a b;}public async Taskint AddAsync(int a, int b){await Task.Delay(1000);return a b;} }示例 var decoratedCalculator LoggingDecoratorICalculator.Create(new Calculator()); decoratedCalculator.Add(3, 5); Console.WriteLine($Started at {DateTime.Now:HH:mm:ss.fff}); var res decoratedCalculator.AddAsync(2, 4);Console.WriteLine(Waiting for 1 seconds for querying customer...); Console.WriteLine($Querying {DateTime.Now:HH:mm:ss.fff}); Console.WriteLine(res.GetAwaiter().GetResult()); Console.WriteLine($Finished at {DateTime.Now:HH:mm:ss.fff});
http://www.w-s-a.com/news/512842/

相关文章:

  • 基金项目实验室信息网站建设wordpress文章新窗口打开
  • php网站开发就业前景做网站推荐源创网络
  • wordpress 8211西安网站优化维护
  • 泰安招聘网站有哪些wordpress 回复提醒
  • 网站服务器不稳定怎么打开网页企业营销策划心得体会
  • 自己做视频网站会不会追究版权企业商城网站建设方案
  • 烟台网站制作计划网站做seo的好处
  • 网站首页轮播官方网站下载拼多多
  • 罗庄区建设局网站自己做网站推广产品
  • 优秀flash网站欣赏苏州吴中区建设局网站
  • 网站添加wordpress博客网上商城购物系统论文
  • 上海市建设安全协会网站王夑晟企业网站建设需要做些什么
  • 网站app 开发辽宁建设工程信息网官网新网站是哪个
  • 厦门建设企业网站建设wordpress添加形式
  • 建立什么网站可以赚钱室内设计效果图qq群
  • 厦门网站设计大概多少钱服务公司沈傲芳
  • 如何起手做网站项目百度站长app
  • dede 购物网站wordpress主题超限
  • 做啊录音网站WordPress音乐悬浮插件
  • 安徽建设厅证书查询网网站网站策划与运营课程认知
  • wordpress证书关闭重庆seo优化效果好
  • 直播网站建设模板网站活动怎么做的
  • 医院网站建设网站网站开发工资高嘛
  • 个人网站备案内容写什么做网站是不是涉及很多语言职
  • 怎么用手机做一个网站门户网站建设工作的自查报告
  • 网站搭建怎么收费浙江建设集团网站
  • 建网站怎么赚钱免费引流软件下载
  • 自建网站服务器备案做基础销量的网站
  • 淘宝 网站建设 发货音乐网站首页设计
  • 丽水做网站杭州建电商网站多少钱