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

怎么创建网站平台wordpress固定链接翻页404

怎么创建网站平台,wordpress固定链接翻页404,域名解析服务器,wordpress修改pageid.NET 动态代理模式:解锁灵活编程新姿势 一、代理模式初相识 在软件开发的世界里,代理模式可是一位常客。它就像是一个中间人,为其他对象提供代理或者占位符。想象一下,你要去办一件事,但这件事有一些繁琐的前置或者后…

.NET 动态代理模式:解锁灵活编程新姿势

一、代理模式初相识

在软件开发的世界里,代理模式可是一位常客。它就像是一个中间人,为其他对象提供代理或者占位符。想象一下,你要去办一件事,但这件事有一些繁琐的前置或者后置流程,你就可以找个代理人帮你处理这些额外的事情,而你只需要专注于核心事务就行。代理模式的主要目的也是如此,在不改动原始对象代码的基础上,给它添加上额外的功能或者行为。

二、.NET 中的动态代理

在.NET 环境里,动态代理模式允许我们在程序运行的时候动态地创建代理对象,进而实现对目标对象的拦截和扩展。这就好比在游戏中,你可以随时给角色添加新的技能和装备。

1. 实现动态代理的关键

在.NET 中,动态代理通常借助System.Reflection.Emit命名空间来创建动态类型。这些动态类型可以继承自MarshalByRefObject或者实现接口,通过重写或者拦截方法调用,添加额外的逻辑。这里的System.Reflection.Emit命名空间就像是一个魔法工具箱,里面有很多神奇的工具可以帮助我们动态生成代码。

2. 核心类介绍

这个命名空间里有几个核心类,比如AssemblyBuilderModuleBuilderTypeBuilderMethodBuilder等。它们就像是一群建筑工人,AssemblyBuilder负责搭建整个建筑(程序集),ModuleBuilder负责划分楼层(模块),TypeBuilder负责建造房间(类型),MethodBuilder则负责在房间里布置家具(方法)。通过它们的协作,我们就能在运行时创建出新的类型和方法。

三、代码示例:动态代理实战

下面是一个简单的示例,通过它我们可以直观地看到如何在.NET 中使用动态代理模式创建一个代理类,并且在调用接口方法时添加一些额外的逻辑。

using System;
using System.Reflection;
using System.Reflection.Emit;// 定义一个接口
public interface IMyService
{void DoSomething();
}// 实现接口的真实服务类
public class RealService : IMyService
{public void DoSomething(){Console.WriteLine("Real service doing something...");}
}// 动态代理工厂类
public class DynamicProxyFactory
{public static IMyService CreateProxy<T>(T target) where T : IMyService{// 创建一个动态类型,继承自 MarshalByRefObject 并实现 IMyService 接口Type proxyType = typeof(MarshalByRefObject);Type[] interfaces = new Type[] { typeof(IMyService) };// 动态生成一个代理类AssemblyName assemblyName = new AssemblyName("DynamicProxyAssembly");AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicProxyModule");TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicProxy" + Guid.NewGuid(), TypeAttributes.Public | TypeAttributes.Class, proxyType, interfaces);// 为代理类实现接口方法MethodInfo doSomethingMethod = typeof(IMyService).GetMethod("DoSomething");MethodBuilder methodBuilder = typeBuilder.DefineMethod("DoSomething", MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig | MethodAttributes.NewSlot, null, Type.EmptyTypes);// 使用 ILGenerator 添加额外逻辑ILGenerator ilGenerator = methodBuilder.GetILGenerator();ilGenerator.EmitWriteLine("Before method call...");ilGenerator.Emit(OpCodes.Ldarg_0); // 加载代理对象本身ilGenerator.Emit(OpCodes.Castclass, typeof(T)); // 将代理对象转换为 T 类型ilGenerator.Emit(OpCodes.Call, doSomethingMethod); // 调用目标方法ilGenerator.EmitWriteLine("After method call...");ilGenerator.Emit(OpCodes.Ret);// 创建代理类型并返回代理实例Type createdType = typeBuilder.CreateType();return (IMyService)Activator.CreateInstance(createdType, target);}
}class Program
{static void Main(){RealService realService = new RealService();IMyService proxyService = DynamicProxyFactory.CreateProxy(realService);proxyService.DoSomething(); // 输出 "Before method call..." "Real service doing something..." "After method call..."}
}

在这个示例中,DynamicProxyFactory.CreateProxy方法创建了一个实现IMyService接口的代理类。当调用DoSomething方法时,代理类会先输出"Before method call…“,接着调用实际服务对象的DoSomething方法,最后输出"After method call…”。通过动态生成 IL 代码,我们可以在代理方法中添加任意逻辑,实现对目标方法的拦截和扩展。

四、动态代理的应用场景

动态代理模式在.NET 中常用于实现 AOP(面向切面编程)功能,比如日志记录、事务管理、性能监控等。以日志记录为例,我们可以通过动态代理在方法调用前后自动记录日志,而不需要在每个方法里手动添加日志代码,这样就大大提高了代码的可维护性和可扩展性。

五、动态代理的优缺点分析

1. 优点

动态代理模式提供了极大的灵活性,我们可以在运行时动态地为对象添加功能,而不需要修改原始代码。这就好比给汽车随时安装不同的配件,让汽车具备不同的功能。

2. 缺点

不过,它也有一些不足之处。动态生成的代码通常比编译时生成的代码运行速度要慢,而且调试和维护动态生成的代码也相对困难。就像一辆经过多次改装的汽车,虽然功能强大了,但出了问题排查起来会比较麻烦。

所以,在使用动态代理模式时,我们需要仔细权衡它的优缺点,根据具体的应用场景来决定是否使用。如果对性能要求不高,且需要灵活地扩展功能,那么动态代理模式是一个不错的选择;但如果对性能要求极高,可能就需要谨慎使用了。 ======================================================================
前些天发现了一个比较好玩的人工智能学习网站,通俗易懂,风趣幽默,可以了解了解AI基础知识,人工智能教程,不是一堆数学公式和算法的那种,用各种举例子来学习,读起来比较轻松,有兴趣可以看一下。
人工智能教程


文章转载自:

http://5a2S15b0.bwttj.cn
http://zo8dTpBp.bwttj.cn
http://MNSizWdf.bwttj.cn
http://FcSRb2iP.bwttj.cn
http://X8942c5d.bwttj.cn
http://GjclikpT.bwttj.cn
http://xPRy2Phn.bwttj.cn
http://TGfVaMXx.bwttj.cn
http://2R4PDER0.bwttj.cn
http://SFT8WONl.bwttj.cn
http://bwFo6e9P.bwttj.cn
http://SZgO9Y6o.bwttj.cn
http://f0Srks3y.bwttj.cn
http://M23kMFOC.bwttj.cn
http://xAGQVkBk.bwttj.cn
http://yJWrKPHZ.bwttj.cn
http://ZX44gN2l.bwttj.cn
http://qJz8E7ki.bwttj.cn
http://Bef2U05k.bwttj.cn
http://dQe8Zsjb.bwttj.cn
http://0wccy4Qz.bwttj.cn
http://OXmcXe1T.bwttj.cn
http://21AZLAdj.bwttj.cn
http://AwlKJalV.bwttj.cn
http://LNaQs6DN.bwttj.cn
http://vC8Ce2Uc.bwttj.cn
http://om9x0DTE.bwttj.cn
http://z38vT7oT.bwttj.cn
http://TuEHrfxr.bwttj.cn
http://DRMkv9Yq.bwttj.cn
http://www.dtcms.com/wzjs/732336.html

相关文章:

  • 什么样的企业要做网站广州新塘做网站
  • 模板式网站开发wordpress插件如何防破解
  • 电子商务网站建设与管理实训内容答案成都市住房与城乡建设局官网
  • 手机版网站建设费用清单大型手游网络游戏排行榜
  • 图书网站开发介绍jsp购物网站开发 论文
  • 在哪建设网站微网站php源码
  • 怎么找网站开发公司家装行业网站建设
  • 怎么给新网站做推广公司注册网上核名通道
  • 如何做网站关键词优化大型门户网站建设费用
  • 搜索引擎营销网站wordpress信息发布系统
  • 专业seo站长工具宣传片拍摄的意义
  • php网站开发使用技术PDF下载网站域名怎么购买
  • 南充建设公司网站唐山最新消息今天
  • 视频网站要多大虚拟主机东莞个人网站建设
  • 公司网站的建设哪家好网站建设需求原型
  • 西安成品网站建设阿里云商标注册
  • 网站的分享按键网站外链建设设计
  • 中小企业品牌网站建设武钢建工集团建设公司网站
  • 做网站排名公司推荐网站建设分为多少模块
  • 服装设计网站哪个好简历生成网站
  • 南宁网站建设云尚网络jquery制作简单的网页
  • 高平企业网站朋友圈广告30元 1000次
  • 互联网网站模块茶叶网站建设公司
  • 专业网站建设公司哪个公司好wordpress装插件
  • 金坛区住房城乡建设局网站网络营销图片
  • 谷德设计网站厦门做网站培训
  • 网站备案查询不到20g虚拟主机建设网站
  • 银川做网站建设做网站运营有趣吗
  • 小加工厂做网站优秀简洁网站设计
  • 怎么让网站收录html购物网站源码